QT,使用QMenu的时候,在action里面执行注销,删除了窗体,导致了崩溃

image.png

测试代码:

ui->setupUi(this);

m_menu = new MyMenu(ui->centralwidget);
m_menu->addAction(tr("注销"), this, [this](){
    delete ui->centralwidget;
});
ui->pushButton->setMenu(m_menu);

解决方法:
将delete改为deleteLater()即可

注:
setMenu不会将menu的生命周期交给pushButton管理,也就是说如果new的时候不设置parent,menu就会成为野指针(内存泄漏)


点墨
26 声望3 粉丝

全栈前端开发工程师