【发布时间】:2014-01-13 11:52:36
【问题描述】:
我正在使用 QTreeWidget 来显示一些项目。我只有一列,我的树的深度为两。我想添加以下功能:如果选择/取消选择顶级项目并且未展开它,则也应选择/取消选择其子项。问题是我如何知道选择何时发生变化。
我正在为我的自定义小部件子类化 QTreeWidget。我可以连接到 QTreeWidget 的 selectionChanged() 插槽,但在这种情况下,我必须遍历所有顶级项目,找出它们的选择状态是否已更改(因此我还需要存储选择状态),并相应地更新所有内容。
我认为应该有一个 selectionChanged() 信号提供有关选择的更多信息,但我在文档中找不到任何内容。对此有何想法?
【问题讨论】:
-
你看
QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)了吗?这是一个虚函数,您可以在自定义 QTreeWidget 子类中覆盖它。 -
嗯,这给了我一些
QItemSelectionRanges,但我想要实际的QTreeWidgetItem*s 已被选中... -
您可以从
QItemSelection:: indexes()获取所选QModelIndexes 的列表,然后使用QTreeWidget::itemFromIndex()函数获取QTreeWidgetItem。 -
嗯,问题是我需要找到新选中的项目,否则程序将永远循环......
标签: c++ qt user-interface