我有以下一系列行动:
//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::exec
和QMessageBox
存在问题,但myDialog->Return();
不存在问题
P.S。我将Debian与Gnome 3和Qt 5.2一起使用。我使用Add New ...在QtCreator中创建了MyDialog - > Qt Designer Form Class - >带按钮的对话框