如何使用 width: auto 使选项卡的宽度随文本内部的变化而变化在 Qt5 中的 QTabBar::tab 中?

Posted

技术标签:

【中文标题】如何使用 width: auto 使选项卡的宽度随文本内部的变化而变化在 Qt5 中的 QTabBar::tab 中?【英文标题】:How to have width of tabs change with text inside using width: auto; in QTabBar::tab in Qt5? 【发布时间】:2014-08-14 13:41:04 【问题描述】:

我有一个 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;

看起来像这样:

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

在我看来,这看起来有问题。我希望width:auto 使选项卡变大以包含其中的文本。这是为了节省空间,因为有很多选项卡,固定宽度会占用大量空间。

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

padding: 1em;

结果如下:

文本被裁剪完全一样,并且填充添加到框的外部。

我尝试了各种负边距、边框和填充的组合,但均无济于事。这在 Qt 中是不可能的吗?

我可以这样解决问题:

width: 7em;

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

欢迎任何提示。谢谢!

【问题讨论】:

【参考方案1】:

我找到了解决办法。

这很简单,我为没有早点找到它而感到尴尬。不过我觉得这对别人有一定的价值,所以我就不删了。

完全省略 width: 行。显然width:auto 和在qss 中忽略不一样。

【讨论】:

以上是关于如何使用 width: auto 使选项卡的宽度随文本内部的变化而变化在 Qt5 中的 QTabBar::tab 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 ReactPlayer 随高度和宽度缩放

如何使用 width: auto 转换内容的宽度?

VB 运行时如何使picture控件随窗体放大缩小

带有导航选项卡的 ActionBar 随屏幕方向改变高度

如何让一个元素高度随宽度按比例自适应

如何使不同类型的输入元素具有相同的宽度?