Russian Qt Forum
Июнь 16, 2024, 01:36
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
прятание QToolBar
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: прятание QToolBar (Прочитано 7208 раз)
L.Marvell
Гость
прятание QToolBar
«
:
Июль 15, 2005, 11:17 »
Всем привет!
Проблемка в следующем: есть приложение с тулбаром, а также есть меню с пунктом "показать тулбар", здесь все работает хорошо. Кликаем показать, тулбар появляется и пункт меню отмечен галочкой, убираем галочку, тулбар прячется. Но, тулбар можно спрятать через его контекстное меню и тогда естественно меню не реагирует, и остается в состоянии ON. Никак не могу понять на какой сигнал тулбара вешать собственный слот. Помогите пожалуйста.
Записан
lepsai
Гость
прятание QToolBar
«
Ответ #1 :
Июль 15, 2005, 12:13 »
void visibilityChanged ( bool visible ) (QDockWindow)
Записан
L.Marvell
Гость
прятание QToolBar
«
Ответ #2 :
Июль 15, 2005, 12:51 »
Извините, я не сказал, что пользую Qt4. В принципе данный сигнал присутствует в Q3DockWindow, но хотелось бы знать, как сделать с помощью именно Qt4.
Записан
Телков Сергей
Гость
прятание QToolBar
«
Ответ #3 :
Июль 26, 2005, 08:33 »
Можешь использовать следующий подход.
На сигнал aboutToShow() твоего меню вешаешь слот. В этом слоте пробегаешь по всем пунктам меню, касающимся тулбаров и обновляешь их состояние (QPopupMenu::setItemChecked()) используя результат возвращаемый функцией тулбара isVisible() (лучше isVisibleTo( <главное_окно_приложения> ).
Можно меню очищать и заново добавлять в него все пункты меню с их статусами, основываясь на списке тулбаров (dock windows), взятому у главного окна (QMainWindow). Таким образом в меню всегда будет достоверная информация обо всех тулбарах, независимо от того когда они добавились/удалились/скрылись/показались. Если еще и список тулбаров фильтровать с использованием функции QMainWindow::isAppropriate(), то тогда меню будет похоже на контекстное меню.
Не знаю как в Qt 4, но в версиях 2 и 3 такой способ вполне применим. Для версии 3 я даже написал класс - наследник QAction, который выполняет такую работу, будучи добвленым в меню.
Записан
L.Marvell
Гость
прятание QToolBar
«
Ответ #4 :
Июль 26, 2005, 13:46 »
Цитата: "Телков Сергей"
Можешь использовать следующий подход.
На сигнал aboutToShow() твоего меню вешаешь слот. В этом слоте пробегаешь по всем пунктам меню, касающимся тулбаров и обновляешь их состояние (QPopupMenu::setItemChecked()) используя результат возвращаемый функцией тулбара isVisible() (лучше isVisibleTo( <главное_окно_приложения> ).
Можно меню очищать и заново добавлять в него все пункты меню с их статусами, основываясь на списке тулбаров (dock windows), взятому у главного окна (QMainWindow). Таким образом в меню всегда будет достоверная информация обо всех тулбарах, независимо от того когда они добавились/удалились/скрылись/показались. Если еще и список тулбаров фильтровать с использованием функции QMainWindow::isAppropriate(), то тогда меню будет похоже на контекстное меню.
Не знаю как в Qt 4, но в версиях 2 и 3 такой способ вполне применим. Для версии 3 я даже написал класс - наследник QAction, который выполняет такую работу, будучи добвленым в меню.
Огромное спасибо за мысль! Правда я уже сделал наследник класса Qtoolbar и на hideEvent() повесил setChecked(false). Может и геморно, но работает
Записан
Телков Сергей
Гость
прятание QToolBar
«
Ответ #5 :
Июль 26, 2005, 14:56 »
Цитата: "L.Marvell"
Огромное спасибо за мысль! Правда я уже сделал наследник класса Qtoolbar и на hideEvent() повесил setChecked(false). Может и геморно, но работает
Советую переопределить метод hide(), так как hideEvent() можно без особого ущерба недопустить с помощью eventFilter(). Впрочем если это использовано в рамках одного заранее известного приложения, то и так будет работать. А вот на библиотечный уровень такой подход все же не потянет по выше названой причине и так как нужно обязательно использовать переопределенный тулбар. Но это уже идеализация.
Записан
L.Marvell
Гость
прятание QToolBar
«
Ответ #6 :
Июль 26, 2005, 15:22 »
Цитата: "Телков Сергей"
Советую переопределить метод hide(), так как hideEvent() можно без особого ущерба недопустить с помощью eventFilter(). Впрочем если это использовано в рамках одного заранее известного приложения, то и так будет работать. А вот на библиотечный уровень такой подход все же не потянет по выше названой причине и так как нужно обязательно использовать переопределенный тулбар. Но это уже идеализация.
Вобщем-то да, это одно заранее известное приложение. Я пока просто учусь. Но за совет спасибо!
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...