如何判断何时修改QTableWidgetItem

时间:2016-07-20 14:44:45

标签: python qt pyqt pyside

我正在使用 PySide 库在Python中编写应用程序。我有QTableWidget每秒更新一次。问题是,我希望能够手动更改数据,我想如果我能找出用户是否正在更改单元格中的数据,那么我可以阻止程序更新此单元格。否则我会被踢掉#34;每次更新时的单元格。

  • 这是个好主意吗?我应该尝试别的吗?为什么?

  • 我如何实现目标?

非常感谢

编辑:

我知道存在itemChanged信号,但我真正想知道的是,当用户在单元格中写入新值时,是否有办法告诉 ,以便在编辑时不要将它们踢出去。

2 个答案:

答案 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