如何给QWidget添加边框?
我正在使用 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,因为它可以让你调用setFrameStyle
和setLineWidth
这两个方法。使用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_()