为什么QDialog :: exec()在QMessageBox :: warning(...)之后将窗口移动到屏幕的左上角?

时间:2014-03-18 18:01:25

标签: c++ qt

我有以下一系列行动:

//MyDialog inherits QDialog and I constuct this dialog with parent = 0
MyDialog* myDialog = new MyDialog(); 
myDialog->exec();
myDialog->Return();
myDialog->exec();

在第一次调用exec期间,对话框显示在屏幕中央。然后函数Return显示QMessageBox::warning(父级= 0)。然后第二个exec调用显示屏幕左上角的对话框(我希望它再次位于屏幕的中心)。如果Return函数未显示QMessageBox::warning,则第二个exec调用会在中心显示对话框。为什么QMessageBox会破坏QDialog::exec的这种行为?我怎样才能在我的程序中修复它? (我不想再次创建此对话框,我只是想第二次显示它)

我注意到对话窗口尺寸越大,它就越完美......

更新:实际上,我可以将myDialog->Return();替换为QMessageBox::warning(0, "title", "message");,我将遇到同样的问题。那么下一个代码

MyDialog* myDialog = new MyDialog(); 
myDialog->exec();
QMessageBox::warning(0, "title", "message");
myDialog->exec();

包含同样的问题。换句话说,QDialog::execQMessageBox存在问题,但myDialog->Return();不存在问题

P.S。我将Debian与Gnome 3和Qt 5.2一起使用。我使用Add New ...在QtCreator中创建了MyDialog - > Qt Designer Form Class - >带按钮的对话框

0 个答案:

没有答案
相关问题