为了节省QTabWidget
的空间,我想仅显示当前标签的关闭图标,例如Firefox正在做:
是否有使用样式表的简单方法,有些事情(不像这样工作)
QTabBar::tab::!selected::close-button {visible: false;}
还是我必须将QTabWidget
子类化以获得所需的行为?
答案 0 :(得分:2)
您不需要对任何内容进行子类化,您可以使用QTabWidget::tabBar()
方法获取与QTabBar *
相关联的标签栏的引用(即QTabWidget
)。 (请注意,此方法不再是 protected ,因此可以在不对类进行子类化的情况下访问它)
QTabBar *tabBar = tabWidget->tabBar();
现在,您可以在非当前标签上使用tabBar
引用隐藏关闭按钮。例如,要隐藏i
按钮,您可以执行以下操作:
tabBar->tabButton(i, QTabBar::RightSide)->hide();
所以简单的工作流程可以如下:
QTabWidget::currentChanged(int index)
信号连接到插槽。index
。答案 1 :(得分:0)
您可以使用受保护的方法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();
}
}