QDialog with Qt::WindowModal on mac
-
I need a blocking QDialog (the main app below should be inactive while it is shown) which is able to display sub-windows on top of it. I'm using this QDialog to display VST plugins, which are free to create multiple sub-windows if needed.
If I set it ApplicationModal, the QDialog is displayed fine, but any sub-windows is shown under the QDialog and therefore cannot be used.
ApplicationModal QDialog with no plugin shown
ApplicationModal QDialog with a plugin trying to show a sub-window (displayed behind the QDialog and inaccessible)If I set it WindowModal, the sub-windows display and works as expected (on top of the QDialog), but the QDialog itself looks weird : it shares its title bar with the main application, and cannot be moved without moving the whole application.
WindowModal QDialog with no plugin shown; notice the title bar shared with the main application
WindowModal QDialog with a plugin showing a sub-window on top, as expectedSo... I'm kinda stuck here. Is there a way to make a QDialog WindowModal while keeping its own title bar and freedom of movement over the main application, like the ApplicationModal dialog does ?
I'm using Qt 5.15 on macOS Catalina.
-
Hi,
WindowModal and ApplicationModal are two different concepts. AFAIK, on macOS, the style for window modal dialog is to be shown as sheets like you see there.
-
Ah, so it's by design and can't be tweaked.
In that case, do you know if I can show my dialog as non-modal (because it allows plugins to create sub-windows as expected) but somehow block the input events from my main window while this dialog is shown ? So it would act like a modal dialog, but I would handle the blocking/unblocking of the main window manually.