【发布时间】:2010-01-11 18:57:58
【问题描述】:
我有一个 QTreeWidget,里面有项目。第一列包含一个唯一编号。这是通过 item->setData(0, 0, unique_number); 设置的。第二列包含一个复选框,通过 item->setCheckState(1, Qt::Unchecked); 设置。用户可以选择他想使用的项目并按下按钮。此按钮的插槽将在选中的项目上运行一个循环。在 Qt 文档中给出了一个示例。您使用 QTreeWidgetItemIterator。
QTreeWidgetItemIterator it(treeWidget);
while (*it) {
if ((*it)->text(0) == itemText)
(*it)->setSelected(true);
++it;
}
它还说您可以在构造函数中指定一个参数以仅迭代检查的项目。标志是:QTreeWidgetItemIterator::Checked。我稍微定制的循环如下:
QTreeWidgetItemIterator it(treeWidget, QTreeWidgetItemIterator::Checked);
while (*it)
{
QVariant w;
w = (*it)->data(0, 0);
std::cout << "Selected item # " << w.toInt() << "\n";
it++;
}
此代码可以正常编译,但在您实际运行程序时无法正常工作。它不打印任何值。
有什么建议吗?谢谢!
【问题讨论】: