1
我有一个添加了项目(包括图标和文本)的QComboBox_1。然后,我从QPushButton_1 clicked()中将项目添加到QListWidget_1中。 QListWidget强制添加一个QListWidgetItem作为指针值。Qt QListWidget addItem内存泄漏
void MainWindow::on_QPushButton_1_clicked(){
int intSelected = ui->QComboBox_1->currentIndex();
QListWidgetItem *Itm = new QListWidgetItem(ui->QComboBox_1->itemIcon(intSelected), ui->QComboBox_1->itemText(intSelected));
ui->QListWidget_1->addItem(Itm);}
它工作正常。但是我没有删除任何代码中的指针变量“* Itm”(MainWindow卸载或关闭)。这会造成内存泄漏?
我是Qt和C++的初学者
在此先感谢。
这是一个普通的过程,任何传递给qwidget(或任何传递给另一个qwidget的qwidget的指针都会像这样被照顾吗? – Jeet
@Jeet其实不,一般情况下你的算法应该是 - 如果你传递的是'QObject'(例如任何'QWidget'都是'QObject'的子类)如果你的对象的所有权被采用(至少对于函数“添加”或“插入”)。然而,在这种情况下'QListWidgetItem'不是'QObject',所以你只能假设所有权将被采用,因为它是通过指针传递的,也可能看到它的用法等的一些例子。我不认为这是真的很好的设计但我们必须忍受它。 – Predelnik