2012-09-01 21 views
1

我試圖構建一個具有多個QTreeWidgetItems的QTreeWidget,我試圖手動添加它們中的一些並且它可以工作。我的問題是如何使用for或while循環添加項目。添加多個QTreeWidgetItems

這裏是我的代碼

Dwidget= new QDockWidget(this); 
Dwidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); 

treeWidget= new QTreeWidget(Dwidget); 

Titem= new QTreeWidgetItem(treeWidget); 
Titem1= new QTreeWidgetItem(); 
Titem2= new QTreeWidgetItem(); 
Titem3= new QTreeWidgetItem(); 

Titem->setText(0,"WriterIdenSystem"); 
Titem->setIcon(0,*(new QIcon("D:/Users/200656336/Documents/Writer Identification/data_repository_icon.jpg"))); 

Titem1->setText(0,"Database for Writer Identification"); 
Titem1->setIcon(0,*(new QIcon("D:/Users/200656336/Documents/Writer Identification/card_file.png"))); 
Titem2->setText(0,"0001"); 
Titem2->setIcon(0,*(new QIcon("D:/Users/200656336/Documents/Writer Identification/Folder Open.png"))); 

Titem3->setText(0,"0002"); 
Titem3->setIcon(0,*(new QIcon("D:/Users/200656336/Documents/Writer Identification/Folder Open.png"))); 

Titem->addChild(Titem1); 
Titem1->addChild(Titem2); 
Titem1->addChild(Titem3); 
treeWidget->addTopLevelItem(Titem); 

connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(on_actionRetrieve_Documents_triggered())); 

Dwidget->setWidget(treeWidget); 
addDockWidget(Qt::LeftDockWidgetArea,Dwidget); 
Dwidget->show(); 

任何想法的一部分? :)

回答

0

根據你的代碼,可以做這樣的事情。

QTreeWidgetItem* items[ITEM_COUNT]; // Must be multiple of 3 
QTreeWidget* treeWidget = new QTreeWidget; 
if(!treeWidget){ /* operating system out of memory, handle the error */ } 
for(int i=0;i<=(ITEM_COUNT-3);i+=3) 
{ 
    items[i ] = new QTreeWidgetItem(treeWidget); 
    if(!items[i]){ /* operating system out of memory, handle the error */ } 
    items[i+1] = new QTreeWidgetItem(treeWidget); 
    items[i+2] = new QTreeWidgetItem(treeWidget); 
    /* set text here */ 
    items[i ]->addChild(items[i]); 
    items[i+1]->addChild(items[i+1); 
    items[i+1]->addChild(items[i+2); 
    treeWidget->addTopLevelItem(items[i]); 
} 
+1

謝謝基督徒對你的幫助:)如果我是正確的你提供給我的代碼是插入所有的項目在樹中。在我的代碼中,我需要將父項和第一項(Titem和Titem1)修復,其餘項目,我希望它們使用循環插入,其中它們的名稱與循環索引相同。在我的代碼中,我只添加了0001和0002,還有很多其他的。 – Souad