gpt4 book ai didi

c++ - QMessageBox 在关闭时删除

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:30 24 4
gpt4 key购买 nike

我有一个问题,对你们中的一些人来说答案很明显,但我就是想不出来。

QMessageBox http://qt-project.org/doc/qt-5/qmessagebox.html有两种显示方式,要么执行 exec() 停止程序执行直到用户关闭消息框,要么执行 show() 只显示框(可能在单独的线程中或以某种方式允许程序在盒子等待用户时继续)。

如何在使用 show() 后删除框?

此代码立即关闭它,消息框出现纳秒然后消失:

QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
delete mb; // obvious, we delete the mb while it was still waiting for user, no wonder it's gone

这段代码做同样的事情

QMessageBox mb(parent);
mb.setWindowTitle(title);
mb.setText(text);
mb.show();
// obvious, as we exit the function mb which was allocated on stack gets deleted

这段代码也是一样的

QMessageBox *mb = new QMessageBox(parent);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();
mb->deleteLater(); // surprisingly this doesn't help either

那么我怎样才能正确使用 show() 而不必以某种复杂的方式处理它的删除呢?是否有类似 deleteOnClose() 函数的东西,它会告诉它在用户关闭后自行删除?

最佳答案

您可以使用 Qt::WA_DeleteOnClose 标记

QMessageBox *mb = new QMessageBox(parent);
mb->setAttribute(Qt::WA_DeleteOnClose, true);
mb->setWindowTitle(title);
mb->setText(text);
mb->show();

关于c++ - QMessageBox 在关闭时删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26925630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com