发出QTreeWidgetItem切换复选框的信号


问题内容

如何检查复选框是否处于选中状态?(在QTreeWidget中)显示如何获取qtreewidget项上复选框的状态。使用该方法,在树中显示itemClicked的信号时,我可以查询是否选中了所选项目。但是,然后我需要跟踪该项目,以查看它是否先前已检查过。

是否有一种方法可以知道QTreeWidgetItem(可能与父项处于不同级别)具有已切换的复选框,而没有为其创建子类吗?

请注意,是否有特定原因导致切换方法未附加到QT中的QTreeWidgetItem?


问题答案:

itemClicked信号不用于处理treewidget复选框一个不错的选择。

一方面,当不单击项目的复选框部分时,它会给出误报。另一方面,使用键盘切换复选框时会产生假阴性。

我认为可以对现有信号进行的最佳处理是使用itemChanged。这将注册所有使用键盘和鼠标所做的复选框状态更改。但是,这不是完美的
通用 解决方案,因为只要更改任何其他项目数据(例如,文本,字体,背景颜色等),它都会给出误报。所以,你需要阻止itemChanged,只要与其他类型的变化作了信号。