我就想刪除topLevelItem stackoverflow上是這樣說的:spa
http://stackoverflow.com/questions/9392051/how-do-i-delete-a-top-level-qtreewidgetitem-from-a-qtreewidgetcode
http://stackoverflow.com/questions/9986231/getting-a-qtreewidgetitem-list-again-from-qtreewidgetblog
如下代碼ProjDataView這個類只是單純繼承QTreeWidget
繼承
1 #include "ProjDataView.h" 2 3 4 5 6 int main(int argc, char *argv[]) 7 { 8 QApplication a(argc, argv); 9 10 11 ProjDataView* dataView = new ProjDataView(0); 12 13 for (int i = 0; i < 5; ++i){ 14 15 QTreeWidgetItem* item = new QTreeWidgetItem(QStringList() << QString("test") + QString::number(i)); 16 17 18 dataView->addTopLevelItem(item); 19 20 } 21 22 23 24 25 for (int i = 0; i < dataView->topLevelItemCount(); ++i){ 26 27 delete dataView->takeTopLevelItem(i); 28 29 } 30 31 32 33 34 dataView->show(); 35 36 37 38 39 40 41 //MyManagerWidget* mng = new MyManagerWidget(0); 42 43 44 //mng->show(); 45 46 return a.exec(); 47 48 }
若是用上述的代碼是不對的,因此從窗口中看出才刪除了test0,test2,test4.get
若是要全刪除的話能夠這樣:qt
while(dataView->topLevelItemCount() > 0){delete dataView->topLevelItem(0);}it
那個for裏邊每執行一次dataView->topLevelItemCount()都會變化,
相應的dataView->topLevelItem(i),也是會變化的。徹底不對。io
不過我最終考慮用clearclass
參照這個:http://stackoverflow.com/questions/13062327/how-to-delete-qtreewidgetitemtest
references:
http://tieba.baidu.com/p/3849541021?pid=70405672647#70405672647