Russian Qt Forum
Ноябрь 25, 2024, 18:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Роль QMainWindow  (Прочитано 4753 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июнь 15, 2014, 14:14 »

Добрый день

На OSX приложение работает без QMainWindow, т.к. никакой смысловой нагрузки оно не несет. Меню приложения на OSX и так есть, скрыть/показать все окна - хоть из меню, хоть с клавишей.

Но вот наступило портирование на злосчастное Вындоуз - а тут так нельзя. Надо куда-то поселить меню - значит надо создавать QMainWindow (а как иначе?). Ну и окна (по крайней мере все немодальные) должны быть внутри QMainWindow, чтобы можно было свернуть приложение. Теперь им нельзя поставить флаг Qt::Window, придется фокусы отслеживать самому и.т.п.  Плачущий Не смертельно, но неприятно. Можно ли как-то всего этого избежать? (вряд ли, но может все-таки...)

Спасибо
« Последнее редактирование: Июнь 15, 2014, 14:22 от Igors » Записан
Bepec
Гость
« Ответ #1 : Июнь 15, 2014, 14:26 »

Ммм... Вот тут вам и нужно QMainWindow или виджет, его заменяющий. Можно вообще не мучаться и перенести функционал на Windows - меню в верху экрана появляющееся при активации любого окна приложения.

Меню можно и самому использовать, насколько я помню QMenuBar.

Всё таки разные ОС и подходы к работе, увы.
Записан
mitrich
Гость
« Ответ #2 : Июнь 15, 2014, 14:42 »

QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.

Надо куда-то поселить меню - значит надо создавать QMainWindow (а как иначе?).
QMenuBar - такой же потомок QWidget как скажем QPushButton - заселяй куда хочешь.
См. также QMenuBar::nativeMenuBar для соответствия Маковской концепции меню.

Ну и окна (по крайней мере все немодальные) должны быть внутри QMainWindow, чтобы можно было свернуть приложение. Теперь им нельзя поставить флаг Qt::Window
Флаг Qt::Window ставить можно. Чтобы при сворачивании главного окна сворачивались все остальные, надо просто установить им главное как parent.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июнь 15, 2014, 15:08 »

QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.
Непонимающий Просветите какие до/после кабельные (не слышал о таком)

QMenuBar - такой же потомок QWidget как скажем QPushButton - заселяй куда хочешь.
См. также QMenuBar::nativeMenuBar для соответствия Маковской концепции меню.
Так а куда если любое окно может быть закрыто? И что смотреть?
Цитировать
The currently supported platforms are Mac OS X and Windows CE. On these platforms if this property is true, the menubar is used in the native menubar and is not in the window of its parent, if false the menubar remains in the window. On other platforms the value of this attribute has no effect.

Флаг Qt::Window ставить можно. Чтобы при сворачивании главного окна сворачивались все остальные, надо просто установить им главное как parent.
Так они все равно свободно перемещаются "вне парента" - выглядит странно.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Июнь 15, 2014, 15:14 »

QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.
Непонимающий Просветите какие до/после кабельные (не слышал о таком)

QDockWidget Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 15, 2014, 16:11 »

QDockWidget Улыбающийся
А смысл? Это или "прилипалка" или опять-таки "независимое" окно - что может показываться вне парента
Записан
Bepec
Гость
« Ответ #6 : Июнь 15, 2014, 16:22 »

Это прилипалка, могущая быть отдельным окном, но не существующая без папы Улыбающийся

Я вам предлагаю сделать виджет, который будет нести в себе управляющие функции и меню для всех окон - наподобие общего меню в OSX Улыбающийся Просто выбираешь окно вашего приложения и оп - вверху/сбоку/снизу экрана появляется панель с меню и кнопками "свернуть, развернуть, закрыть".
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Июнь 15, 2014, 16:23 »

"докабельных", "док.." -- "Dock"
Вот и все, что я пытался сообщить, вам Igors, ведь по вашим словам, вы не слышали об таком Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Июнь 15, 2014, 16:53 »

"докабельных", "док.." -- "Dock"
Вот и все, что я пытался сообщить, вам Igors, ведь по вашим словам, вы не слышали об таком Улыбающийся
А! Теперь понял  Улыбающийся

Я вам предлагаю сделать виджет, который будет нести в себе управляющие функции и меню для всех окон - наподобие общего меню в OSX Улыбающийся Просто выбираешь окно вашего приложения и оп - вверху/сбоку/снизу экрана появляется панель с меню и кнопками "свернуть, развернуть, закрыть".
Ну это "слишком смело"  Улыбающийся
Записан
Bepec
Гость
« Ответ #9 : Июнь 15, 2014, 17:11 »

Просто если MDI делать, то уже без MainWindow никуда.
А если MDI не делать, то ничего не остаётся, кроме как делать управляющий виджет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.