Russian Qt Forum
Ноябрь 25, 2024, 18:16
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Роль QMainWindow
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Роль QMainWindow (Прочитано 4746 раз)
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...