• 3972阅读
  • 1回复

qtablewidget中tab键捕获 [复制链接]

上一主题 下一主题
离线weihua1984
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-10
要实现的效果是,在qtableWidget的item编辑完成时检验输入数据正确性,qtableWidget或qtableWidgetitem本身就没有editfinishing信号
问题1:想重新实现qtableWidget,重写其mousepressEvent。
使用qtablewidget时候,按tab键会在qtablewidgetItem间切换编辑,
继承了该类,在双击编辑某item ,输入一些数据后,直接tab键,此时qtableWidget捕获不到keypress事件
其父窗口widget也捕获不到事件,这是撒回事,在qtableWidget和其父窗体的focusInEvent和focusOutEvent中分别都是grabKey和releaseKey
还是捕获不到keyPressEvent事件
问题2:使用qtableWidget的itemChanged信号
感觉这种方式很好,只有在item的数据发生变化时发送该信号,当我编辑完成后,鼠标按其他item时是发送了itemchanged信号,
在itemchanged信号对应的槽onItemChanged中
void onItemChanged(QTableWidgetItem *item)
{
    tablewidget->editItem(item);//这里不起作用,因为当前的item已变成鼠标按的其他item了,不知撒的就编辑不了了,才有了一的尝试
}

到现在这两种方式都不是很好,待高手指点
离线wxj120bw

只看该作者 1楼 发表于: 2011-08-10
如果检测输入数据正确性 你应该子类化QTableWidgetItem。tab键很可能被QTableWidgetItem吃掉了。
快速回复
限100 字节
 
上一个 下一个