使用样式表调整QGroupBox中标题的位置

10
我正在尝试为QGroupBox设置样式,以满足特定的设计要求:

enter image description here

注意 - 顶部的组标题应该在左侧,但要超过框曲率。
使用以下样式表,如果我删除“left”这个词,我会得到下面的图片(第二张图片):
QGroupBox {
    font: bold; 
    border: 1px solid silver;
    border-radius: 6px;
    margin-top: 6px;
}
QGroupBox::title {
    subcontrol-origin:  margin;
    subcontrol-position: top left;    // for second image:  top; 
    padding: 0 2px 0 2px;
}

enter image description here enter image description here

所以,看起来我想要的是subcontrol-position: top left;,但需要加上偏移量。我在任何地方都找不到它。

添加填充会擦除该行,因此这不是我想要的。

刚刚我找到了一个选项 - subcontrol-origin:的另一个选项:

QGroupBox::title {
    subcontrol-origin:  padding;
    subcontrol-position: top left; 
    padding: -16 12px 0 12px;
}

它看起来几乎正确——但边框现在穿过了标题。

enter image description here

我该如何移动GroupBox的标题,使其仍在左侧但超出框曲率,并使曲率保持可见,就像设计中一样?
1个回答

15

应用以下样式:

QGroupBox {
    font: bold;
    border: 1px solid silver;
    border-radius: 6px;
    margin-top: 6px;
}

QGroupBox::title {
    subcontrol-origin: margin;
    left: 7px;
    padding: 0px 5px 0px 5px;
}
我得到的东西类似于这样:

在此输入图片描述


1
如果我有一个可变的QGroupBox::title字体大小值,那么margin-top的值会出错吗? - Chris P
据我所知,font-size 应该添加到 QGroupBox 中,但是是的,我认为你需要重新计算 margin-top 的值。我在这里有一个示例。 - Tarod
没有标题的填充,文本右侧会有一个小空间。你知道怎么清除吗?我希望标题文本与上边框线连接在一起。 - Chris P
不确定你在寻找什么@chris-p,但在这个例子中你大致上有相同的内容:`QGroupBox { font: bold; font-size: 23px; border: 1px solid silver; border-radius: 6px; margin-top: 15px; }QGroupBox::title { subcontrol-origin: margin; left: 3px; padding: 0px 0px 10px 0px; }` - Tarod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接