代码之家  ›  专栏  ›  技术社区  ›  Mr. Developerdude

如何使用width:auto使标签的宽度随文本的变化而变化;Qt5中的QTabBar::选项卡?

  •  1
  • Mr. Developerdude  · 技术社区  · 10 年前

    我有一个QTabBar,带有几个带有以下样式的选项卡窗格:

    QTabBar::tab {
        background: gray;
        color: white;
        width:auto;
        height:1em;
        border:0px;
        border-top-left-radius:8px;
        border-top-right-radius:8px;
    }
    
    QTabBar::tab:selected {
        background: lightgray;
        font-weight:bold;
        color:black;
    }
    

    这看起来是这样的:

    Tab text is cropped

    您可以清楚地看到,选项卡大小是恒定的。除了自定义字体之外,没有其他样式会影响此QTabBar。也没有特别的代码影响它。

    对我来说,这看起来很麻烦。我希望 width:auto 使选项卡的大小增大,以包含其中的文本。这是为了节省空间,因为对于许多选项卡,具有固定宽度将占用大量空间。

    此外,我还设置了一个填充,看看这是否会给文本更多的空间,比如:

    padding: 1em;
    

    结果如下:

    Text still cropped even with padding

    文本的裁剪方式完全相同,填充被添加到框的外部。

    我尝试过各种负边距、边框和填充的组合,但都没有效果。这在Qt中是不可能的吗?

    我可以这样解决问题:

    width: 7em;
    

    但是所有的标签都是相同的宽度,我不得不浪费大量的屏幕空间。

    欢迎任何提示。谢谢

    1 回复  |  直到 10 年前
        1
  •  2
  •   Mr. Developerdude    10 年前

    我找到了解决办法。

    这很简单,我为没能早点找到它而感到尴尬。但我想这对其他人有一些价值,所以我不会删除它。

    只需完全省略width:行。显然地 width:auto 这与在qs中忽略它不同。