Название: QTabWidget и закрытие таба по щелчку. Отправлено: Я.К. от Ноябрь 27, 2008, 08:24 Есть QTabWidget. В ём есть табы. В табах этих есть виджеты.
а) как сделать, чтобы эти табы в QTabWidget'е можно было закрывать, например, по щелчку на QTabBar'ы средней кнопкой мыши? Или сделать так, чтобы на этих QTabBar'ах была этакая кнопочка закрытия. А лучше и то и другое сразу. б) Кстати, как сделать так, чтобы при закрытии таба на него и все его виджеты-потомки вызывался delete? Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Spicos от Ноябрь 27, 2008, 09:50 Хороший вопрос.
Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Racheengel от Ноябрь 27, 2008, 11:01 1. Переопределить QTabBar, добавив нужный функционал, и назначить новый класс для QTabWidget.
2. Убить виджет, связанный с табом, при закрытии - все его потомки будут автоматом убиты (если не забыт parent в конструкторе при создании). Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Я.К. от Ноябрь 27, 2008, 20:20 А как сделать, чтобы при закрытии какого-то виджета он удалялся? А то обычно он просто прячется.
Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: pastor от Ноябрь 27, 2008, 20:32 А как сделать, чтобы при закрытии какого-то виджета он удалялся? А то обычно он просто прячется. см. Qt::WA_DeleteOnClose Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Я.К. от Ноябрь 27, 2008, 20:56 Премного благодарит.
ЗЫ: а вроде был какой-то атрибут, что-то типа closable, что на QTabBar'ах появлялись кнопки закрытия - кто-то что-нибудь про это слыхал? Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: ритт от Ноябрь 27, 2008, 21:05 Qt4.5
Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Ryhel от Ноябрь 29, 2008, 12:31 А зачем так сложно? Достаточно установить eventFilter на стандартный QTabBar и можно обрабатывать любые события
Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Я.К. от Декабрь 01, 2008, 19:59 А зачем так сложно? Достаточно установить eventFilter на стандартный QTabBar и можно обрабатывать любые события Так ведь QTabBar Сам по себе ни получить, ни вставить не дают? Можешь какой-нибудь простой пример показать - как закрыть таб одним щелчком? Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: ритт от Декабрь 02, 2008, 00:03 если задача ограничена закрытием по клику, читай доки:
Цитировать QTabBar * QTabWidget::tabBar () const [protected] void QTabWidget::setTabBar ( QTabBar * tb ) [protected] Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Ryhel от Декабрь 02, 2008, 01:47 Так ведь QTabBar Сам по себе ни получить, ни вставить не дают? Можешь какой-нибудь простой пример показать - как закрыть таб одним щелчком? Ну как уже было упомянуто таббар можно получить с помощью QTabWidget::tabBar(), правда для этого надо субкласситься от QTabWidget. Далее из QTabWidget можно сказать tabBar()->installEventFilter(this). В перегруженном QTabWidget::eventFilter() после проверок if(o == tabBar()) и if(e-> == QEvent::MouseButtonRelease) можно получить позицию мыши через QMouseEvent::pos(), затем по ней индекс таба с помощью QTabBar()::tabAt(). Ну а уже по индексу можно выполнять над табом нужные действия.Название: Re: QTabWidget и закрытие таба по щелчку. Отправлено: Я.К. от Декабрь 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 |