Qt应用在调用QMessageBox :: question()

时间:2019-05-30 12:46:03

标签: c++ qt qt5

我在我正在处理的Qt应用程序中看到一个奇怪的崩溃,我想知道是否有人看到过类似的东西或知道可能是什么原因。

崩溃是由于访问冲突引起的,并且在调用QMessageBox :: question()的情况下,发生这种情况的发生率大约为30%。该应用仅在“发布”模式下崩溃(在“调试”中则永远不会崩溃)。

导致崩溃的代码看上去完全是无害的:

QMessageBox::question(
        this,
        QString("Deleting configuration"),
        QString("Are you sure you want to delete this configuration?"));

对话框是使用静态函数调用(如上)还是显式创建的都没有关系。其他带有图标的标准对话框(QMessageBox :: critical(),QMessageBox :: information()等)也会导致此崩溃,但是有趣的是,没有任何图标的默认QMessageBox对话框从不崩溃。但是,通过setIcon()添加标准图标后,崩溃再次出现:

QMessageBox dialog;
dialog.setText("Blah blah blah");
dialog.setIcon(QMessageBox::Question);
dialog.exec();

可能与这些对话框中的标准图标有关吗?崩溃仅发生在第一个对话框显示上;一旦显示单个对话框而没有崩溃,则所有后续对话框都将正常工作。

Qt版本为5.12.2,该应用程序使用Visual Studio 2017 x64 C ++编译器进行编译。

0 个答案:

没有答案