2013-08-22 2 views
0

У меня есть две QMainWindows. Я хотел бы, чтобы QMessageBox отображался в QMainWindow с exec(), другой QMainWindow не блокировался.QMainWindow independent

Два QMainWindow должны быть независимыми.

Как это сделать?

+0

Что это нужно делать с 'QThread'? – RobbieE

+0

На данный момент ничего. Но я думаю, что QmainWindows должен быть независимым, как если бы они были QThreads. – artoon

ответ

2

Это не имеет никакого отношения к QThread, документация Qt гласит, что в приложении QT можно использовать поток только ONE GUI.

Что вы должны сделать, так это установить флаг модальности, чтобы сделать диалог модальным, поэтому он будет модальным, связанным с его родительским окном. Перед выполнением диалога, звоните:

pDialog->setWindowModality(Qt::WindowModal); 

И не забудьте установить правильный родительский для диалогового объекта.

Qt документации говорится: -

Modal Dialogs 

A modal dialog is a dialog that blocks input to other visible windows in the 
same application. Dialogs that are used to request a file name from the user or 
that are used to set application preferences are usually modal. Dialogs can be 
application modal (the default) or window modal. 
0

Используйте способ show() для отображения каждого QMainWindow вместо exec().

+0

QMainWindows отображаются с показом. И мне нужно использовать exec для QMessageBox для обработки результата. – artoon