C++ QtContainer中QStackedWidget中的双重删除
我的表单中有一个QStackedWidget,我正在动态添加某些WidgetC++ QtContainer中QStackedWidget中的双重删除,c++,qt,C++,Qt,我的表单中有一个QStackedWidget,我正在动态添加某些Widget m_lineEdit = new QLineEdit(); m_label = new QLabel(); m_lineEdit->setText(name()); m_label->setText(name()); innerUi->stackedWidget->addWidget(m_lineEdit); innerUi->stacked
m_lineEdit = new QLineEdit();
m_label = new QLabel();
m_lineEdit->setText(name());
m_label->setText(name());
innerUi->stackedWidget->addWidget(m_lineEdit);
innerUi->stackedWidget->addWidget(m_label);
connect(m_lineEdit, &QLineEdit::editingFinished, [this]() {
m_label->setText(m_lineEdit->text());
innerUi->stackedWidget->setCurrentWidget(m_label);
});
innerUi->stackedWidget->setCurrentWidget(m_label);
当我使用它时,它工作得很好。但当我关闭应用程序时,它崩溃了
我试图调查这个问题,并观察到以下几点。stackedwidget的父级存储在QVector中。有时我会动态地从QVector中删除元素
m_tasks.removeOne(task);
mainUi->tasksLayout->removeWidget(task);
task->setParent(nullptr);
mainUi->statusLabel->setText(getCompleteStatus());
delete task;
因此,这会导致双重删除。有人能给我建议如何解决这个问题吗?尝试使用而不是删除。您正确地将parent设置为null,这意味着默认Qt机制不应删除您的对象,但它仍可能由未删除的信号/插槽连接调用