我怎么做?
实际上,我的主要目标是获取QTreeWidget中的哪个复选框。但是,如果你们能帮助我解决这个问题,我可以做到。
好吧,我找不到能再次给我QList<QTreeWidgetItem *>的方法,因此我可以遍历列表并检查是否已选中复选框(奇怪的句子,是吗?)。QTreeWidget::selectedItems()不执行我想要的操作。它实际上得到了选定的项目(可能只是一个。因此,我不知道itemS在这里意味着什么。无论如何,我可能还是错的)。

我现在的主要目标是:通过QTreeWidget能够对它的项目做我想做的任何事情。

提前致谢。

最佳答案

由于您要处理的是树,因此该API旨在使您可以访问树结构中的QTreeWidgetItem。因此,没有直接的方法直接通过Qt的API直接访问每个QTreeWidgetItem。但是,有两种方法可以执行此操作:

1)如果您所有的项目(或您关心的所有项目)都是“顶级”的,则可以执行以下操作:

for( int i = 0; i < tree->topLevelItemCount(); ++i )
{
   QTreeWidgetItem *item = tree->topLevelItem( i );

   // Do something with item ...
}

2)如果您需要访问树中的每个项目以及该项目的子项,则可以采用递归方法:
doStuffWithEveryItemInMyTree( tree->invisibleRootItem() );

void doStuffWithEveryItemInMyTree( QTreeWidgetItem *item )
{
    // Do something with item ...

    for( int i = 0; i < item->childCount(); ++i )
        doStuffWithEveryItemInMyTree( item->child(i) );
}

关于c++ - 从QTreeWidget再次获取QTreeWidgetItem列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9986231/

10-09 06:37