我正在使用 PySide 库在Python中编写应用程序。我有QTableWidget
每秒更新一次。问题是,我希望能够手动更改数据,我想如果我能找出用户是否正在更改单元格中的数据,那么我可以阻止程序更新此单元格。否则我会被踢掉#34;每次更新时的单元格。
这是个好主意吗?我应该尝试别的吗?为什么?
我如何实现目标?
非常感谢
编辑:
我知道存在itemChanged
信号,但我真正想知道的是,当用户在单元格中写入新值时,是否有办法告诉 ,以便在编辑时不要将它们踢出去。
答案 0 :(得分:1)
在Qt文件中:
void QTableWidget :: itemChanged(QTableWidgetItem * item)
只要项目数据发生变化,就会发出此信号。
希望这会对你有所帮助。
编辑:
QTableWidget使用默认的itemdelegate(QItemDelegate实例),它具有createEditor方法和closeEditor信号。
您可以重新实现createEditor,这意味着编辑开始,并连接信号closeEditor,这意味着编辑结束。
这可能是正确的方法。
答案 1 :(得分:1)
通常,您可以使用QItemDelegates
来处理这种情况,它允许您控制用户可以编辑哪些单元格,为编辑单元格提供哪些类型的控件,您可以捕获在将数据保存到模型之前,他们输入并验证或操纵数据。
QItemDelegates
仅控制使用视图界面进行的编辑。如果以编程方式更新表,则不会将更改发送到QItemDelegate
。
QItemDelegate
,QTableWidget
的{p> Here is an example