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() 的时候,就帮我管理了嵌入里面的控件的内存了。会帮我们调用析构函数。