Russian Qt Forum
Ноябрь 24, 2024, 02:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTabWidget без TabBar  (Прочитано 9717 раз)
radislav72
Гость
« : Август 30, 2010, 15:11 »

Можно ли в виджете QTabWidget программно убрать TabBar с кнопками вкладок?

Суть в следующем: информация в окне группируется по вкладкам, но иногда данные на всех вкладках кроме главной могут отсутствовать, и тогда логично было бы не только сделать их невидимыми (removeTab()), а и скрыть TabBar за ненадобностью.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Август 30, 2010, 15:19 »

QTabWidget::tabBar()->hide()
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #2 : Август 30, 2010, 16:33 »

QTabWidget::tabBar()->hide()

Пробовал, но генерируется ошибка:
Код:
error: 'QTabBar* QTabWidget::tabBar() const' is protected

Или только переписывать класс?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Август 30, 2010, 16:35 »

Цитировать
Или только переписывать класс?
Ну, а как иначе-то?
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #4 : Август 30, 2010, 17:04 »

Ну, а как иначе-то?

Понятно... Думал, может есть более "легальный" способ. Ну нет так нет... переработаем маленько исходник Улыбающийся

Спасибо за ответ.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Август 30, 2010, 17:08 »

Цитировать
Понятно... Думал, может есть более "легальный" способ.
Нет, способ только такой.
А вот почему его тролли так "испортили" мне тоже непонятно.
Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Август 30, 2010, 17:56 »

при назначении нового таббара могут быть косяки. В 5.0 вроде исправят
Записан
Kolobok
Гость
« Ответ #7 : Август 30, 2010, 18:57 »

Можно сделать через css

Код:
QTabBar::tab:only-one {
  height: 0 px;
}
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Август 30, 2010, 19:13 »

да отнаследуйтесь от табвиджета и сделайте метод setTabBarHidden(bool hide) - делов 5 строк, даже .cpp не надо писать, все прям в хедере
Записан
fuCtor
Гость
« Ответ #9 : Август 30, 2010, 19:52 »

QTabWidget = QTabBar + QStackedLayout
Открываем документацию и находим все что нужно.
Свой компонент + полный контроль над поведением.
Записан
JayFOX
Гость
« Ответ #10 : Август 31, 2010, 15:32 »

Могу предложить решение без наследования:
Код:
QTabWidget* tab=new QTabWidget;
QTabBar* tabBar=qFindChild<QTabBar*>(tab);
tabBar->hide();
Записан
radislav72
Гость
« Ответ #11 : Август 31, 2010, 16:40 »

Могу предложить решение без наследования...

То что нужно: большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.189 секунд. Запросов: 23.