Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: radislav72 от Август 30, 2010, 15:11



Название: QTabWidget без TabBar
Отправлено: radislav72 от Август 30, 2010, 15:11
Можно ли в виджете QTabWidget программно убрать TabBar с кнопками вкладок?

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


Название: Re: QTabWidget без TabBar
Отправлено: GreatSnake от Август 30, 2010, 15:19
QTabWidget::tabBar()->hide()


Название: Re: QTabWidget без TabBar
Отправлено: radislav72 от Август 30, 2010, 16:33
QTabWidget::tabBar()->hide()

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

Или только переписывать класс?


Название: Re: QTabWidget без TabBar
Отправлено: GreatSnake от Август 30, 2010, 16:35
Цитировать
Или только переписывать класс?
Ну, а как иначе-то?


Название: Re: QTabWidget без TabBar
Отправлено: radislav72 от Август 30, 2010, 17:04
Ну, а как иначе-то?

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

Спасибо за ответ.


Название: Re: QTabWidget без TabBar
Отправлено: GreatSnake от Август 30, 2010, 17:08
Цитировать
Понятно... Думал, может есть более "легальный" способ.
Нет, способ только такой.
А вот почему его тролли так "испортили" мне тоже непонятно.


Название: Re: QTabWidget без TabBar
Отправлено: Авварон от Август 30, 2010, 17:56
при назначении нового таббара могут быть косяки. В 5.0 вроде исправят


Название: Re: QTabWidget без TabBar
Отправлено: Kolobok от Август 30, 2010, 18:57
Можно сделать через css

Код:
QTabBar::tab:only-one {
  height: 0 px;
}


Название: Re: QTabWidget без TabBar
Отправлено: Авварон от Август 30, 2010, 19:13
да отнаследуйтесь от табвиджета и сделайте метод setTabBarHidden(bool hide) - делов 5 строк, даже .cpp не надо писать, все прям в хедере


Название: Re: QTabWidget без TabBar
Отправлено: fuCtor от Август 30, 2010, 19:52
QTabWidget = QTabBar + QStackedLayout
Открываем документацию и находим все что нужно.
Свой компонент + полный контроль над поведением.


Название: Re: QTabWidget без TabBar
Отправлено: JayFOX от Август 31, 2010, 15:32
Могу предложить решение без наследования:
Код:
QTabWidget* tab=new QTabWidget;
QTabBar* tabBar=qFindChild<QTabBar*>(tab);
tabBar->hide();


Название: Re: QTabWidget без TabBar
Отправлено: radislav72 от Август 31, 2010, 16:40
Могу предложить решение без наследования...

То что нужно: большое спасибо!