Qml windows appearance
-
wrote on 2 Oct 2015, 18:44 last edited by pavelvasev 10 Feb 2015, 18:53
Hi all!
I have a main window of my app. Then, I want to show some non-modal sub-window.
It should be shown always above the main window of my app, but not above all windows on desktop, and it should minimize/hide when main window is minimized.
When I use flags:
Qt.Dialog | Qt.WindowStaysOnTopHint
for sub-window, it is shown always above the main window, which is what I want... But there are side effects, e.g. with that flags my sub-window is shown:- above all other windows in the system.
- above ongoing
MessageDialog
s andFileDialog
s of my app.
Tha latter is a main trouble. Because user might never see some MessageDialog. And in case it is app-modal, the whole app become blocked! :-/ Same trouble for FileDialog - it is comfortless to choose files when FileDialog is covered by some other window.
Could you please suggest me how to configure my qml sub-window to eliminate stated side effects? I even may call some c++ code, even specific to Windows, to achieve the desired behaviour.
Many thanks a lot. My Qt version is 5.3.1
-
wrote on 4 Oct 2015, 06:40 last edited by pavelvasev 10 Apr 2015, 06:45
I found the root of the problem.
Sub-window objects were defined inside MenuBar object. Sitting there, they were unable to find transient parent window (e.g main window of the app), and behaved like ordinal top-level windows, same as main window.
I checked 2 cases: MenuBar is declared as a children inside some item inside main window, and as a property value. In both cases transient parent window was not founded. It seems MenuBar is a some kind of special object which breaks the transient parent search algorithm.
The solution was to place sub-window objects as child objects to some other better item, probably right inside main window.
2/2