2017-02-01 63 views
1

Qt提供了QTreeWidgetItemIterator類來遍歷樹視圖的項目。 甚至有一個構造函數版本需要項目指針而不是視圖。不幸的是,即使在這種情況下,迭代也會下降到最後一項。通常,這不是預期的行爲。如果我從這個項目開始,我只想重複它的子孫。當然,我可以在樹上找到另一個循環來檢查我是否沒有超越起始項目,但這很醜陋。 有沒有辦法做到這一點很好?如何在Qt中迭代QTreeWidgetItem的子項Qt

QTreeWidgetItemIterator it(treeWidget); 
     while (*it) { 
      if ((*it)->text(0) == itemText) 
       (*it)->setSelected(true); 
      ++it; 
     } 

回答

1

如果您有父項開始,然後只需通過其子循環:

for (int i = 0; i < item->childCount(); i++) 
{ 
    QTreeWidgetItem *child = item->child (i); 
    // ... perform work here ... 
} 

我沒有看到,通過一個項目的子女循環迭代器,但真的沒有必要爲了它。

+0

由於item-> child(i)作爲額外的O(n)循環,它不會太慢嗎? – def