Python 如何判断何时修改QTableWidgetItem
我正在用PySide库用Python编写一个应用程序。我有一个大约每秒更新一次的Python 如何判断何时修改QTableWidgetItem,python,qt,pyqt,pyside,Python,Qt,Pyqt,Pyside,我正在用PySide库用Python编写一个应用程序。我有一个大约每秒更新一次的QTableWidget。问题是,我希望能够手动更改数据,并且我认为如果我能够发现用户是否正在更改单元格中的数据,那么我可以阻止程序更新此单元格。否则每次更新我都会被“踢出”牢房 这是个好主意吗?我应该试试别的吗?为什么 我怎样才能实现我的目标 非常感谢 编辑: 我知道存在一个itemChanged信号,但我真正想知道的是,是否有一种方法可以告诉用户何时在单元格中写入新值,以便在编辑时不将其踢出。在Qt文档中:
QTableWidget
。问题是,我希望能够手动更改数据,并且我认为如果我能够发现用户是否正在更改单元格中的数据,那么我可以阻止程序更新此单元格。否则每次更新我都会被“踢出”牢房
- 这是个好主意吗?我应该试试别的吗?为什么
- 我怎样才能实现我的目标
编辑: 我知道存在一个
itemChanged
信号,但我真正想知道的是,是否有一种方法可以告诉用户何时在单元格中写入新值,以便在编辑时不将其踢出。在Qt文档中:
作废QTableWidget::itemChanged(QTableWidgetItem*item)每当项目数据发生变化时,就会发出此信号。 希望这对你有帮助 编辑: QTableWidget使用默认的itemdelegate(QItemDelegate实例),该实例具有createEditor方法和closeEditor信号 您可以重新实现createEditor,这意味着编辑开始,并连接signal closeEditor,这意味着编辑结束
这可能是正确的方法。通常,您可以使用来处理这种情况,它允许您控制用户可以编辑哪些单元格,为它们提供哪些类型的控件来编辑单元格,并且您可以捕获它们输入的数据,并在将其保存到模型之前验证或操作这些数据
QItemDelegates
仅控制使用视图界面进行的编辑。如果以编程方式更新表,则更改不会发送到QItemDelegate
对于一个
QTableWidget
的QItemDelegate
,对于同一个单元格,您有两个可能的源来更改它,每秒钟由程序更新一次,同时,您允许用户更改它。最终的结果有时是,一个人想要踩到另一个人的脚趾。我知道这一点,但是当项目被更改时会发生什么呢?简单地说,您可以连接信号“cellDoubleClicked”,这意味着用户已经进入编辑模式,并将“IsEdit”等标志设置为True。另外,您需要在tablewidgetclass中实现“mousePressEvnet”和“focusOutEvent”,将“IsEdit”设置为False,这意味着用户已完成编辑。希望这对您有所帮助。