从QTableWidget移除项是否会删除内含对象?Qt对象删除触发排查
Qt 5.15.2中myCustomQObject对象的删除触发源排查问题
我使用Qt 5.15.2与C++开发项目,目前无法定位触发myCustomQObject对象删除的事件。下方的lambda函数会在myCustomQObject被删除时触发,进而发出communicationDeleted(serverName)信号,但不清楚该对象的删除触发源:
auto deletionConnection = connect(myCustomQObject, &QWidget::deleted, [myCustomQObject, this, serverName] (){ communicationDeleted(serverName); });
创建对象及信号连接的代码
void myCustomTableWidget::addRow(const QString& serverName) { myCustomQObject* newCustomQObject = new myCustomQObject(this); QWidget* newCellWidget = new QWidget(); QHBoxLayout* rowLayout = new QHBoxLayout(newCellWidget); rowLayout->addWidget(myCustomQObject); newCellWidget->setLayout(rowLayout); m_ui->tableServers->insertRow(m_rowCount); m_ui->tableServers->setCellWidget(newCellWidget); auto deletionConnection = connect(myCustomQObject, &QWidget::deleted, [myCustomQObject, this, serverName] (){ communicationDeleted(serverName); }); m_->deletionConnections.pushBack(deletionConnection); ... }
怀疑的删除触发点
我怀疑是myCustomTableWidget::deleteRow(qint32)槽函数导致对象删除:
void myCustomTableWidget::deleteRow(qint32 rowIndex) { m_ui->tableServers->removeRow(rowIndex); m_rowCount--; }
当删除表格中三个项时,该槽函数的断点会触发三次,但lambda函数是在后续流程中才执行。请问是否是移除表格行导致对象被删除?还是需要排查其他位置?
内容的提问来源于stack exchange,提问作者Berat Yilmaz
相关产品推荐
相关产品推荐

