Russian Qt Forum
Ноябрь 27, 2024, 12:37
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
QTabWidget и закрытие таба по щелчку.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTabWidget и закрытие таба по щелчку. (Прочитано 8423 раз)
Я.К.
Гость
QTabWidget и закрытие таба по щелчку.
«
:
Ноябрь 27, 2008, 08:24 »
Есть QTabWidget. В ём есть табы. В табах этих есть виджеты.
а) как сделать, чтобы эти табы в QTabWidget'е можно было закрывать, например, по щелчку на QTabBar'ы средней кнопкой мыши? Или сделать так, чтобы на этих QTabBar'ах была этакая кнопочка закрытия. А лучше и то и другое сразу.
б) Кстати, как сделать так, чтобы при закрытии таба на него и все его виджеты-потомки вызывался delete?
Записан
Spicos
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #1 :
Ноябрь 27, 2008, 09:50 »
Хороший вопрос.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #2 :
Ноябрь 27, 2008, 11:01 »
1. Переопределить QTabBar, добавив нужный функционал, и назначить новый класс для QTabWidget.
2. Убить виджет, связанный с табом, при закрытии - все его потомки будут автоматом убиты (если не забыт parent в конструкторе при создании).
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Я.К.
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #3 :
Ноябрь 27, 2008, 20:20 »
А как сделать, чтобы при закрытии какого-то виджета он удалялся? А то обычно он просто прячется.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #4 :
Ноябрь 27, 2008, 20:32 »
Цитата: Я.К. от Ноябрь 27, 2008, 20:20
А как сделать, чтобы при закрытии какого-то виджета он удалялся? А то обычно он просто прячется.
см. Qt::WA_DeleteOnClose
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Я.К.
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #5 :
Ноябрь 27, 2008, 20:56 »
Премного благодарит.
ЗЫ: а вроде был какой-то атрибут, что-то типа closable, что на QTabBar'ах появлялись кнопки закрытия - кто-то что-нибудь про это слыхал?
Записан
ритт
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #6 :
Ноябрь 27, 2008, 21:05 »
Qt4.5
Записан
Ryhel
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #7 :
Ноябрь 29, 2008, 12:31 »
А зачем так сложно? Достаточно установить eventFilter на стандартный QTabBar и можно обрабатывать любые события
«
Последнее редактирование: Ноябрь 29, 2008, 12:33 от Ryhel
»
Записан
Я.К.
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #8 :
Декабрь 01, 2008, 19:59 »
Цитата: Ryhel от Ноябрь 29, 2008, 12:31
А зачем так сложно? Достаточно установить eventFilter на стандартный QTabBar и можно обрабатывать любые события
Так ведь QTabBar Сам по себе ни получить, ни вставить не дают? Можешь какой-нибудь простой пример показать - как закрыть таб одним щелчком?
Записан
ритт
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #9 :
Декабрь 02, 2008, 00:03 »
если задача ограничена закрытием по клику, читай доки:
Цитировать
QTabBar * QTabWidget::tabBar () const [protected]
void QTabWidget::setTabBar ( QTabBar * tb ) [protected]
Записан
Ryhel
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #10 :
Декабрь 02, 2008, 01:47 »
Цитата: Я.К. от Декабрь 01, 2008, 19:59
Так ведь QTabBar Сам по себе ни получить, ни вставить не дают? Можешь какой-нибудь простой пример показать - как закрыть таб одним щелчком?
Ну как уже было упомянуто таббар можно получить с помощью QTabWidget::tabBar(), правда для этого надо субкласситься от QTabWidget. Далее из QTabWidget можно сказать tabBar()->installEventFilter(this). В перегруженном QTabWidget::eventFilter() после проверок if(o == tabBar()) и if(e-> == QEvent::MouseButtonRelease) можно получить позицию мыши через QMouseEvent::pos(), затем по ней индекс таба с помощью QTabBar()::tabAt(). Ну а уже по индексу можно выполнять над табом нужные действия.
Записан
Я.К.
Гость
Re: QTabWidget и закрытие таба по щелчку.
«
Ответ #11 :
Декабрь 07, 2008, 12:06 »
Таки оно было тут.
http://www.qtcentre.org/forum/f-qt-programming-2/t-qtabwidget-how-to-close-a-tab-by-a-click-17334.html
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...