1

Тема: QT MDI + QDialog -> Qt::WindowModal

Добрий день !

Чи є тут специ по QT ?

Якщо так, то ось трАблема - треба щоб запрацював Qt::WindowModal
Мінімальний проєкт додано (mdi.zip). Перевірити можна так:

  1. 3 рази натискаємо NEW

  2. На одному із вікон натискаємо кнопку під списком
    Буде створено Child вікно QDialog і його Parent заблокується - так має бути !

  3. І ось тут МАЮТЬ бути доступні ДВА інших попередньо-створені QDialog

Зараз блокується все  ;-(

Прапорець Qt::WindowModal встановлений !
... але працює як Qt::ApplicationModal

Linux  QT 5.9.3

Подякували: leofun011

2

Re: QT MDI + QDialog -> Qt::WindowModal

johnz написав:

Мінімальний проєкт додано

Де?

johnz написав:

ДВА інших попередньо-створені QDialog

А які у тих діалогів батьки?
https://doc.qt.io/qt-6/qt.html#WindowModality-enum

The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.

Подякували: leofun011

3 Востаннє редагувалося johnz (05.10.2023 13:04:45)

Re: QT MDI + QDialog -> Qt::WindowModal

Я додавав архів (zip) до першої месаги.
Спробую ще раз додати ...Цей контент доступний тільки зареєстрованим користувачам.

Спрацювало !!!
Отож ... Кнопка внизу "Додати файл" НЕ працює,
Кнопка зверху "UPLOAD" - працює !

4

Re: QT MDI + QDialog -> Qt::WindowModal

Кнопка працює, але її треба натискати після того, як ви вибрали файл.

Подякували: johnz1

5 Востаннє редагувалося leofun01 (09.10.2023 15:11:18)

Re: QT MDI + QDialog -> Qt::WindowModal

The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.

Це я бачив. 
Виходить що перший рівень треба "робити" БЕЗ parent window ? (MainWindow)
Саме це все блокує ?!

зроблено

2 Admin
Якщо можливо, скопіюйте або перенесіть завантажений "додаток" в першу месагу.

6

Re: QT MDI + QDialog -> Qt::WindowModal

Не працює  :(
Режим MDI в QT не реалізований як потрібно.
Те що написано в документації про Qt::WindowModal фактично відпоповідає Qt::AppModal  :( 
Саме так воно зараз працює ...

7

Re: QT MDI + QDialog -> Qt::WindowModal

MDI & WindowModal - це зовсім різні речі.

В "двох словах":
MDI це режим роботи з вікнами, де головне вікно містить багато внутрішніх вікон. Часто такий режим користують для роботи з багатьма документами або коли робота кожного з внутрішніх вікон взагалі не залежить від стану інших вікон.
WindowModal - це вікно, яке своїм існуванням блокує батька, і тільки його закриття приводить до розблокування батька.

З того що я бачу в цьому topic'у, вам треба просто окремі вікна (не MDI), тоді WindowModal заблокує одного з них.

8

Re: QT MDI + QDialog -> Qt::WindowModal

leofun01 написав:

MDI & WindowModal - це зовсім різні речі.

В "двох словах":
MDI це режим роботи з вікнами, де головне вікно містить багато внутрішніх вікон. Часто такий режим користують для роботи з багатьма документами або коли робота кожного з внутрішніх вікон взагалі не залежить від стану інших вікон.
WindowModal - це вікно, яке своїм існуванням блокує батька, і тільки його закриття приводить до розблокування батька.

Саме це я і СПИТАВ в першому пості ...  Як реалізувати ?

leofun01 написав:

З того що я бачу в цьому topic'у, вам треба просто окремі вікна (не MDI), тоді WindowModal заблокує одного з них.

Саме це мені і треба. 
Це схоже на режим роботи 1С ... де є Документ, Довідник і Звіт ОДНОЧАСНО, і один одного НЕ блокують !!!

9

Re: QT MDI + QDialog -> Qt::WindowModal

Див. за ключовими словами:

  1. ApplicationManager

  2. WindowManager

  3. ApplicationManagerWindow

Я здивований що все це в звязці так погано ґуґлиться.

Дивлюсь на список прикладів, вони багато видалили. Деякі приклади перенесені в окремі репо. Виглядає наче вони хочуть всіх примусово перевести на QML.

На SO знайшов приклад. Він не є прикладом роботи з багатьма вікнами, але поради там теж корисні.

Подякували: johnz1

10

Re: QT MDI + QDialog -> Qt::WindowModal

leofun01 написав:

Див. за ключовими словами:

  1. ApplicationManager

  2. WindowManager

  3. ApplicationManagerWindow

Я здивований що все це в звязці так погано ґуґлиться.

Дивлюсь на список прикладів, вони багато видалили. Деякі приклади перенесені в окремі репо. Виглядає наче вони хочуть всіх примусово перевести на QML.

Саме так, але є нюанс ... З приходом в QT нових "манагерів", перекроїли майже весь фреймворк, і заявили про "новий"  підхід до розробки.
Engin QT-Script теж попав "під роздачу"  :(  його позначили як "застарілий" (а він ще не встиг "вирости" :)  ) і заявили про перехід саме на  QML.
Для чого ?! Не відомо ...

На SO знайшов приклад. Він не є прикладом роботи з багатьма вікнами, але поради там теж корисні.

Дякую - подивлюся.

Подякували: leofun011