Russian Qt Forum
Июля 03, 2025, 06:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Роль QMainWindow
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Роль QMainWindow (Прочитано 5013 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Роль QMainWindow
«
:
Июня 15, 2014, 14:14 »
Добрый день
На OSX приложение работает без QMainWindow, т.к. никакой смысловой нагрузки оно не несет. Меню приложения на OSX и так есть, скрыть/показать все окна - хоть из меню, хоть с клавишей.
Но вот наступило портирование на злосчастное Вындоуз - а тут так нельзя. Надо куда-то поселить меню - значит надо создавать QMainWindow (а как иначе?). Ну и окна (по крайней мере все немодальные) должны быть внутри QMainWindow, чтобы можно было свернуть приложение. Теперь им нельзя поставить флаг Qt::Window, придется фокусы отслеживать самому и.т.п.
Не смертельно, но неприятно. Можно ли как-то всего этого избежать? (вряд ли, но может все-таки...)
Спасибо
«
Последнее редактирование: Июня 15, 2014, 14:22 от Igors
»
Записан
Bepec
Гость
Re: Роль QMainWindow
«
Ответ #1 :
Июня 15, 2014, 14:26 »
Ммм... Вот тут вам и нужно QMainWindow или виджет, его заменяющий. Можно вообще не мучаться и перенести функционал на Windows - меню в верху экрана появляющееся при активации любого окна приложения.
Меню можно и самому использовать, насколько я помню QMenuBar.
Всё таки разные ОС и подходы к работе, увы.
Записан
mitrich
Гость
Re: Роль QMainWindow
«
Ответ #2 :
Июня 15, 2014, 14:42 »
QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.
Цитата: Igors от Июня 15, 2014, 14:14
Надо куда-то поселить меню - значит надо создавать QMainWindow (а как иначе?).
QMenuBar - такой же потомок QWidget как скажем QPushButton - заселяй куда хочешь.
См. также QMenuBar::nativeMenuBar для соответствия Маковской концепции меню.
Цитата: Igors от Июня 15, 2014, 14:14
Ну и окна (по крайней мере все немодальные) должны быть внутри QMainWindow, чтобы можно было свернуть приложение. Теперь им нельзя поставить флаг Qt::Window
Флаг Qt::Window ставить можно. Чтобы при сворачивании главного окна сворачивались все остальные, надо просто установить им главное как parent.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Роль QMainWindow
«
Ответ #3 :
Июня 15, 2014, 15:08 »
Цитата: mitrich от Июня 15, 2014, 14:42
QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.
Просветите какие до/после кабельные (не слышал о таком)
Цитата: mitrich от Июня 15, 2014, 14:42
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
.
Цитата: mitrich от Июня 15, 2014, 14:42
Флаг Qt::Window ставить можно. Чтобы при сворачивании главного окна сворачивались все остальные, надо просто установить им главное как parent.
Так они все равно свободно перемещаются "вне парента" - выглядит странно.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Роль QMainWindow
«
Ответ #4 :
Июня 15, 2014, 15:14 »
Цитата: Igors от Июня 15, 2014, 15:08
Цитата: mitrich от Июня 15, 2014, 14:42
QMainWindow обеспечивает главным образом поддержку докабельных тулбаров и панелек.
Просветите какие до/после кабельные (не слышал о таком)
QDockWidget
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Роль QMainWindow
«
Ответ #5 :
Июня 15, 2014, 16:11 »
Цитата: gil9red от Июня 15, 2014, 15:14
QDockWidget
А смысл? Это или "прилипалка" или опять-таки "независимое" окно - что может показываться вне парента
Записан
Bepec
Гость
Re: Роль QMainWindow
«
Ответ #6 :
Июня 15, 2014, 16:22 »
Это прилипалка, могущая быть отдельным окном, но не существующая без папы
Я вам предлагаю сделать виджет, который будет нести в себе управляющие функции и меню для всех окон - наподобие общего меню в OSX
Просто выбираешь окно вашего приложения и оп - вверху/сбоку/снизу экрана появляется панель с меню и кнопками "свернуть, развернуть, закрыть".
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Роль QMainWindow
«
Ответ #7 :
Июня 15, 2014, 16:23 »
"докабельных", "док.." -- "Dock"
Вот и все, что я пытался сообщить, вам Igors, ведь по вашим словам, вы не слышали об таком
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Роль QMainWindow
«
Ответ #8 :
Июня 15, 2014, 16:53 »
Цитата: gil9red от Июня 15, 2014, 16:23
"докабельных", "док.." -- "Dock"
Вот и все, что я пытался сообщить, вам Igors, ведь по вашим словам, вы не слышали об таком
А! Теперь понял
Цитата: Bepec от Июня 15, 2014, 16:22
Я вам предлагаю сделать виджет, который будет нести в себе управляющие функции и меню для всех окон - наподобие общего меню в OSX
Просто выбираешь окно вашего приложения и оп - вверху/сбоку/снизу экрана появляется панель с меню и кнопками "свернуть, развернуть, закрыть".
Ну это "слишком смело"
Записан
Bepec
Гость
Re: Роль QMainWindow
«
Ответ #9 :
Июня 15, 2014, 17:11 »
Просто если MDI делать, то уже без MainWindow никуда.
А если MDI не делать, то ничего не остаётся, кроме как делать управляющий виджет.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...