Для экономии места в QTabWidget
Я хотел бы показать значок закрытия только для текущей вкладки, например, например. Firefox делает:
Есть ли простой способ использования таблицы стилей, что-то вроде (не работает, как это)
QTabBar::tab::!selected::close-button {visible: false;}
или я должен подкласс QTabWidget
получить желаемое поведение?
Вам не нужно ничего подкласса, вы можете использовать QTabWidget::tabBar()
метод для получения ссылки (т.е. QTabBar *
) к панели вкладок, связанной с вашим QTabWidget
, (Обратите внимание, что этот метод больше не защищенный, поэтому к нему можно получить доступ без подкласса класса)
QTabBar *tabBar = tabWidget->tabBar();
Теперь вы можете использовать tabBar
ссылка на скрывать кнопки закрытия на нетоковых вкладках. Например, чтобы скрыть i
Эту кнопку вы можете сделать:
tabBar->tabButton(i, QTabBar::RightSide)->hide();
Таким образом, простой рабочий процесс может быть следующим:
QTabWidget::currentChanged(int index)
сигнал в слот.index
,Вы можете подкласс QTabWidget
чтобы получить доступ к QTabBar
виджет с использованием защищенного метода QTabWidget::tabBar
, Затем вы можете подключиться к QTabBar::currentChanged
вручную и скрыть кнопку закрытия для не выбранных вкладок:
QTabBar::ButtonPosition closeSide =
(QTabBar::ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, this);
for (int i = 0; i < toolbar->count(); ++i)
{
if (i != toolbar->currentIndex())
{
QWidget *w = toolbar->tabButton(i, closeSide);
w->hide();
}
}