0

我在Qt-docs中找到了 QGroupbox 类的 flat 属性,它说:

组框通常由顶部带有标题的周围框架组成。如果启用此属性,则大多数样式只绘制框架的顶部;否则,将绘制整个框架。

我正在尝试构建这样一个扁平的 QGroupBox,但它似乎不起作用,正如您在这张图片中看到的那样。在文档中它还说:

注意:在某些样式中,扁平组框和非扁平组框具有相似的表示,并且可能不像在其他样式中那样可区分。

这将我引向QStyle Class,这让我有点过度紧张,因为我不知道如何更改 QGroupBox 的样式。我什至不确定,这是否是这里的真正问题。正如您在下面的代码中看到的,我没有为 QGroupBox 分配特定的样式。所以,它应该使用某种标准风格,我猜......

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, 
QVBoxLayout, QLabel


class WidgetWithFlatGroupBox(QWidget):
    def __init__(self):
        QWidget.__init__(self, flags=Qt.Widget)

        self.init_ui()

    def init_ui(self):
        self.setGeometry(300, 300, 300, 100)
        self.setWindowTitle('PyQt5 Window')

        layout = QVBoxLayout()

        layout.addWidget(self.create_groupbox(), alignment=Qt.AlignCenter)

        self.setLayout(layout)

    def create_groupbox(self):
        groupbox = QGroupBox('Flat Groupbox')
        layout = QVBoxLayout()

        label = QLabel('This Groupbox should be flat.')

        layout.addWidget(label, alignment=Qt.AlignCenter)

        groupbox.setLayout(layout)

        groupbox.setFlat(True)

        return groupbox


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = WidgetWithFlatGroupBox()
    ex.show()
    sys.exit(app.exec_())

我看了一下互联网,当然也在这里 stackoverflow,但找不到有用的东西。有谁知道如何正确使用 QGroupBox 类的 flat 属性?

4

2 回答 2

0

对不起,但我不明白你需要怎么做:

  • border: None;

在此处输入图像描述

  • border: 1px solid #76797C;

在此处输入图像描述

试试看:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QGroupBox, 
                             QVBoxLayout, QLabel, QPushButton)


class WidgetWithFlatGroupBox(QWidget):
    def __init__(self):
        QWidget.__init__(self, flags=Qt.Widget)

        self.init_ui()

    def init_ui(self):
        self.setGeometry(300, 300, 300, 100)
        self.setWindowTitle('PyQt5 Window')

        layout = QVBoxLayout()
        layout.addWidget(self.create_groupbox(), alignment=Qt.AlignCenter)
        self.setLayout(layout)

    def create_groupbox(self):
        groupbox = QGroupBox('Flat Groupbox')

        layout   = QVBoxLayout()

        label = QLabel('This Groupbox should be flat.')

        button = QPushButton("This Button !!!")
        button.setFlat(True)

        layout.addWidget(label, alignment=Qt.AlignCenter)
        layout.addWidget(button, alignment=Qt.AlignCenter)

        groupbox.setLayout(layout)
#        groupbox.setFlat(True)

        return groupbox

style = '''
QGroupBox {

    border: None;               /*<-----  None              */
/*    border: 1px solid #76797C;   <-----  1px solid #76797C */

    border-radius: 2px;
    margin-top: 20px;
}

QGroupBox::title {
    subcontrol-origin: margin;
    subcontrol-position: top center;
    padding-left: 10px;
    padding-right: 10px;
    padding-top: 10px;
}
'''

if __name__ == '__main__':
    app = QApplication(sys.argv)

    app.setStyleSheet(style)

    ex = WidgetWithFlatGroupBox()
    ex.show()
    sys.exit(app.exec_())
于 2019-01-28T20:33:18.260 回答
-1
self.groupBox_33.setFlat(True)
于 2021-10-14T14:04:28.850 回答