首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5 QGroupBox -如何在QGroupBox的顶端显示标题?

PyQt5 QGroupBox -如何在QGroupBox的顶端显示标题?
EN

Stack Overflow用户
提问于 2020-04-28 04:12:57
回答 1查看 126关注 0票数 1

下面是这个例子:

代码语言:javascript
复制
# test1.py

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout, QVBoxLayout, QPushButton, QRadioButton, \
    QGroupBox, QButtonGroup
from PyQt5.Qt import Qt

def main():
    app = QApplication([])
    mainForm = MainForm()
    mainForm.show()
    app.exec()
# end function

class MainForm(QWidget):

    def __init__(self):
        super().__init__()

        self.rdoRed = QRadioButton('Red')
        self.rdoGreen = QRadioButton('Green')
        self.rdoBlue = QRadioButton('Blue')

        self.vblColor = QVBoxLayout()
        self.vblColor.addWidget(self.rdoRed)
        self.vblColor.addWidget(self.rdoGreen)
        self.vblColor.addWidget(self.rdoBlue)

        self.gbColor = QGroupBox('Choose Color')

        self.gbColor.setStyleSheet('QGroupBox:title {'
                                   'subcontrol-origin: padding; }')

        self.gbColor.setLayout(self.vblColor)

        self.vboxLayout = QVBoxLayout()
        self.vboxLayout.addWidget(self.gbColor)

        self.setLayout(self.vboxLayout)
    # end function

# end class

if __name__ == '__main__':
    main()

在Ubuntu 18.04上像这样渲染:

我希望当前位于QGroupBox边界线顶部上方的Choose Color文本与QGroupBox边界线的顶部一致,就像Qt文档所显示的那样:

注意Package selection是如何与QGroupBox的顶部边界线一致的,我想对上面例子中的Choose Color标题做同样的事情。

这是操作系统的限制吗?我问的是不可能的吗?我使用的是Ubuntu 18.04。

或者有没有可以传入的setStyleSheet参数来实现这一点?正如您在上面的示例中所看到的,我试图设置一些样式表属性来实现这一点,但我找不到这样的属性。或者,是否有其他方法可以实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 04:40:39

试试看:

代码语言:javascript
复制
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout, QVBoxLayout, QPushButton, QRadioButton, \
    QGroupBox, QButtonGroup
from PyQt5.Qt import *


class MainForm(QWidget):

    def __init__(self):
        super().__init__()

        self.rdoRed = QRadioButton('Red')
        self.rdoGreen = QRadioButton('Green')
        self.rdoBlue = QRadioButton('Blue')

        self.vblColor = QVBoxLayout()
        self.vblColor.addWidget(self.rdoRed)
        self.vblColor.addWidget(self.rdoGreen)
        self.vblColor.addWidget(self.rdoBlue)

        self.gbColor = QGroupBox('Choose Color')


        self.gbColor.setStyleSheet('''
            QGroupBox {
                background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                                  stop: 0 #E0E0E0, stop: 1 #FFFFFF);
                border: 2px solid #999999;
                border-radius: 5px;
                margin-top: 2ex;  /*leave space at the top for the title */
                font-size: 13px;
                color: black;
            }
            QGroupBox::title {
                subcontrol-origin: margin;
                subcontrol-position: top center;    /* position at the top center */
                padding: 0 3px;
                font-size: 13px;
                color: black;
            }
        ''')

        self.gbColor.setLayout(self.vblColor)

        self.vboxLayout = QVBoxLayout()
        self.vboxLayout.addWidget(self.gbColor)

        self.setLayout(self.vboxLayout)


def main():
    app = QApplication([])
    mainForm = MainForm()
    mainForm.show()
    app.exec()

if __name__ == '__main__':
    main()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61467662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档