1

複数の QTreeWidgetItems を持つ QTreeWidget を構築しようとしていますが、それらのいくつかを手動で追加しようとしましたが、動作します。私の質問は、for または while ループを使用して項目を追加する方法です。

ここに私のコードの一部があります

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();

何か案は??:)

4

1 に答える 1

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]);
}
于 2012-09-01T17:01:19.333 に答える