发信号通知QTreeWidgetItem切换复选框

时间:2014-12-17 08:42:17

标签: python qt pyqt pyside qtreewidget

How do I check if a checkbox is checked or unchecked? (In QTreeWidget)显示如何获取qtreewidget项目上的复选框的状态。使用该方法,使用Tree中的itemClicked信号,我可以查询是否选中了所选项目。但是,我需要跟踪此项目以查看之前是否已检查过。

有没有一种方法可以知道QTreeWidgetItem可能与父项不同,它有一个切换复选框,而没有为它创建子类?

请注意,QT中的QTreeWidgetItem没有附加切换方法的具体原因吗?

1 个答案:

答案 0 :(得分:3)

itemClicked信号不是处理treewidget复选框的好选择。

一方面,当不点击项目的复选框部分时,它会给出误报;另一方面,当使用键盘切换复选框时,它会给出漏报。

我认为使用现有信号可以做到的最好的事情就是使用itemChanged。这将记录键盘和鼠标所做的所有复选框状态更改。但是,它不是完美的通用解决方案,因为每当任何其他项目数据发生变化时(例如文本,字体,背景颜色等),它都会产生误报。因此,无论何时进行其他类型的更改,您都需要block itemChanged信号。