【发布时间】:2014-05-25 07:43:59
【问题描述】:
我想在按下按钮时向 QTreeWidget 添加项目。我在我的程序中使用以下代码:
void MainWindow::on_training_addButton_clicked()
{
countertest++;
QStringList slist;
slist << QString::number(countertest);
ui->trainingDataTreeWidget->addTopLevelItem(new QTreeWidgetItem(slist)); //case 1
//QTreeWidgetItem* item = new QTreeWidgetItem(slist); //case 2
//ui->trainingDataTreeWidget->addTopLevelItem(item);
//delete item;
}
在这两种情况下,我都为 QTreeWidgetItem 分配了动态内存。在第二种情况下,我在将其传递给addTopLevelItem() 后将其删除,但我担心 Qt 以后可能需要它。解决这个问题的正确方法是什么?
【问题讨论】:
-
据我所知,一旦你将一个项目添加到树小部件中,树小部件就拥有它,并在树小部件被删除时将其删除。你不应该自己删除它。
-
感谢您的回答。我还有一个问题.. 如果我在没有
delete item的情况下使用第二种情况并再次按下按钮,item指向的数据会被覆盖,对吧?那么会不会影响QTreeWidget的内容呢?
标签: c++ qt qtgui qtreewidget qtreewidgetitem