QTabBar选项卡分组:设置单个选项卡的样式(而不是选项卡内部的小部件)

时间:2019-04-14 05:16:38

标签: grouping qtabbar

对于带有很多标签的QTabBar(和QTabWidget),我想通过在组之间绘制间隙来对标签进行分组。

最明显的方法可能是添加一个间隔标签,将其禁用,然后设置QTabBar :: tab:disabled的样式以使其不可见。关于stackexchange的另一个解决方案中的一个很好的例子,很抱歉,我失去了它的链接。

但是,这是该程序的一部分,它的制表符序列相当复杂且相互交织,因此不必完全插入制表符选项卡即可更改制表符序列。

因此,我想为任何给定组的第一个标签设置样式,以使其左侧留有间隙。您可以对所有选项卡执行此操作,例如:

        self.ui.tabWidget.setStyleSheet("""
        QTabBar::tab {
            margin-left:10px;

哪个给: enter image description here

问题是,如何将其仅应用于某些选项卡?

似乎关键问题是:如何设置单个标签的样式,而不是位于标签内部的小部件的样式?

执行这样的操作只会在标签的边框内增加边距和填充:

bar.tabButton(i,QTabBar.LeftSide).setStyleSheet(...)

,不会在标签之间添加任何视觉分隔。我正在寻找在标签边框之外添加边距的方法。

我尝试将其添加到样式表中

        QTabBar::tab[categoryPosition="first"] {
            margin-left:10px;
        }
        QTabBar::tab[categoryPosition="last"] {
            margin-right:10px;
        }
在代码中

与此伴随的是,每个选项卡是组中的第一个:

bar.tabButton(i,QTabBar.LeftSide).setProperty("categoryPosition","first")

但是没有运气。关于stackoverflow的其他一些问题表明,由于选项卡是结构而不是窗口小部件本身,因此无法通过其索引来设置特定选项卡的样式,但是,我不确定我是否正确理解了这些选项卡。

因此,这又回到了最初的问题:在QTabBar中完成这种视觉分组的最佳方法是什么? 1)添加间隔制表符:比制表符序列更改复杂时听起来更复杂; 2)在任何特定组中设置第一个和/或最后一个标签的样式; 3)还有另一个好的选择吗?

0 个答案:

没有答案