如何给QWidget添加边框?

9 投票
2 回答
35575 浏览
提问于 2025-04-17 01:48

我正在使用 PyQT4 来为一个潜在客户创建一个示例应用程序。我想找一种方法给某个特定的控件加个边框。请给我一些建议,让我知道该去哪里找。

更新:

class CentralWidget(QtGui.QWidget):

    def __init__(self, mainWindow):
        super(CentralWidget, self).__init__()

        self.create(mainWindow)

上面的代码定义了这个控件。

2 个回答

3

你可以这样使用 setFramStyle

 self.setFrameStyle(QFrame.StyledPanel | QFrame.Plain)
 self.setLineWidth(1)

想了解更多信息,可以查看以下链接 https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QFrame.html

16

根据样式表的说明,QWidget这个控件并不支持边框属性(不过自从2011年这个回答发布以来,情况似乎有所变化)。

如果你的控件是其他控件的容器,那么你应该使用QFrame,因为它可以让你调用setFrameStylesetLineWidth这两个方法。使用QFrame比调用setStyleSheet更好,因为样式表会让所有子控件都继承边框属性。

下面是一个完整的例子:

from PyQt4 import QtGui,QtCore

class CentralWidget(QtGui.QFrame):

    def __init__(self, *args):
        super(CentralWidget, self).__init__(*args)
        # use for a non-contaner widget
        self.setStyleSheet("background-color: rgb(255,0,0); margin:5px; border:1px solid rgb(0, 255, 0); ")
        # use for a container widget
        self.setFrameStyle(QFrame.StyledPanel | QFrame.Plain)
        self.setLineWidth(1)
        
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    mw = QtGui.QMainWindow()
    w = CentralWidget(mw)
    mw.setCentralWidget(w)
    mw.show()
    w.show()
    app.exec_()

撰写回答