qml button弹出messagedialog闪退 QT6
时间: 2023-09-02 10:05:50 浏览: 185
Qt6 QML Book/Qt C++/样板应用程序示例源码
可能是因为弹出的 `QMessageBox` 对象没有被正确地销毁,导致程序崩溃。你可以尝试使用 `QPointer` 或 `std::unique_ptr` 来管理 `QMessageBox` 对象的生命周期,确保在对话框关闭后及时释放内存。
以下是使用 `QPointer` 的示例代码:
```
#include <QApplication>
#include <QPointer>
#include <QPushButton>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPointer<QMessageBox> messageBox = new QMessageBox(QMessageBox::Information, "Title", "Message", QMessageBox::Ok);
QPushButton button("Show Message Box");
QObject::connect(&button, &QPushButton::clicked, [&messageBox]() {
messageBox->exec();
});
button.show();
return app.exec();
}
```
注意,在使用 `QPointer` 时需要在程序退出前检查指针是否为空,如果不为空则需要手动删除对应的对象。
另外,如果你使用的是 Qt 6,建议检查一下 `QMessageBox` 的使用方式是否与 Qt 6 的 API 规范相符。
阅读全文