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