QTreeWidgetItemIterator

QTreeWidgetItemIterator

我有一个带有项目的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++;

}

这段代码可以正常编译,但是在您实际运行程序时将无法正常工作。它不打印任何值。

有小费吗?谢谢!

最佳答案

Qt文档中缺少的一个警告是QTreeWidgetItemIterator::Checked标志仅测试每个QTreeWidgetItems中列0的检查状态。在复选框中使用第0列,在唯一编号中使用第1列,应该会导致循环打印值。

关于c++ - Qt 4.6-C++-QTreeWidgetItem迭代器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2044141/

10-11 21:25