Qt TableWidgetItem在item中放入QWidget(控件)的内存问题。

   void MainWindow::slot_btn1_clicked()
{    
     ui->tableWidget->insertRow(0);
    //第一个item
    QDateTime currentTime = QDateTime::currentDateTime();
    QTableWidgetItem *item0 = new QTableWidgetItem(currentTime.toString("yyyy-MM-dd HH:mm:ss"));
    //第二个item
    QTableWidgetItem *customizeitem = new QTableWidgetItem();
    CustomizeItemWidget *itemWidget = new CustomizeItemWidget();

    ui->tableWidget->setItem(0, 0, item0);
    ui->tableWidget->setItem(0, 1, customizeitem);
    ui->tableWidget->setCellWidget(0, 1, itemWidget);
}  //大概意思是点击这个按钮会在tablewidget中生成两个item. 其中第二个item是嵌入了一个Qwidget

1)这个时候如果我调用:   

ui->tableWidget->setRowCount(0); 

我发现,嵌入第二个item的widget调用了析构函数。

2)这个时候如果我调用:   

ui->tableWidget->removeRow(0);

我发现,嵌入第二个item的widget调用了析构函数。

3)同样的:

ui->tableWidget->clear();    //会发生同样的结果。

说明QTableItem 在我们调用了setCellWidget() 的时候,就帮我管理了嵌入里面的控件的内存了。会帮我们调用析构函数。

你可能感兴趣的:(C++,QT)