You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:07:38