我正在用Python编写一个带有PySide库的应用程序。我有一个QTableWidget
,它每秒钟更新一次。问题是,我希望能够手动更改数据,我想,如果我能够知道用户是否在更改单元格中的数据,那么我就可以阻止程序更新这个单元格。否则,每次更新时,我都会被“赶出”牢房。
非常感谢
编辑:
我知道存在一个itemChanged
信号,但我真正想知道的是,是否有一种方法可以判断用户何时在单元格中写入一个新值,以便在编辑时不将它们踢出。
发布于 2016-07-20 16:30:45
在Qt文件中:
QTableWidgetItem::itemChanged(QTableWidgetItem* item)
每当项的数据发生变化时就发出此信号。
希望这能帮到你。
编辑:
QTableWidget使用默认的项目委托(QItemDelegate实例),它具有createEditor方法和closeEditor信号。
您可以重新实现createEditor,这意味着编辑开始,并连接信号closeEditor,这意味着编辑结束。
这可能是正确的方法。
发布于 2016-07-20 17:36:09
通常,您可以通过使用QItemDelegates
来处理这种情况,它允许您控制哪些单元格可由用户编辑,哪些类型的控件可用于编辑单元格,您还可以捕获它们输入的数据并对其进行验证或操作,然后将其保存到模型中。
QItemDelegates
只控制使用视图接口进行的编辑。如果正在以编程方式更新表,则不会将更改发送到QItemDelegate
。
用于Here is an example的QItemDelegate
的QTableWidget
https://stackoverflow.com/questions/38484452
复制相似问题