我正在使用 Qt 库(4.8 版)开发应用程序。
我有一个带有 QStandardItemModel 的 QTreeView。我的小部件看起来像这样:
项目1
分项 11
分项 12
项目2
子项 21
子项22
第 3 项
子项 31
子项 32
这是我将项目添加到 QTreeView 的方法:
model->setItem(0, 0, item1);
item1->setChild(0, 0, subitem12);
我只想在用户双击一个项目时采取行动(当他点击一个子项目时什么都不做)。所以我使用 doubleClicked(const QModelIndex & index)信号。
我想处理用户双击的项目/子项目的信息。所以我得到了我的项目/子项目的行:
index.row();
但是每次我尝试引用项目/子项目以显示其名称或检查它是否有子项时,我只能访问这些项目:
index.model()->item(row)->text();
我的问题是:如何访问我的插槽中的子项(vbetween items abd subitems)?或者我怎样才能阻止他们发出信号?我不能禁用它们——这对用户来说太混乱了。
编辑:问题是每次我点击一个项目或子项目并执行:
index.model()->item(row)->hasChildren();
或者:
index.model()->item(row)->parent() == 0;
我得到了真实的结果。所以我只能参考这些项目。
我的问题是:引用子项的正确方法是什么?