Qt QFrame边框未显示问题求助及相关代码
QFrame边框不显示的解决办法
问题出在你混用了QFrame原生边框设置和样式表:当你用setStyleSheet只设置border-color:white时,样式表会覆盖QFrame默认的边框渲染逻辑,但单独的颜色定义不足以触发边框绘制,必须完整指定边框的宽度、样式和颜色。
下面提供两种可行的解决方式:
方式一:使用原生API设置边框及颜色
保留setFrameShape等原生设置,通过调色板替代样式表来设置边框颜色,避免样式表覆盖原生渲染:
self.frame = QtWidgets.QFrame(self) self.frame.setFrameShape(QtWidgets.QFrame.Box) self.frame.setGeometry(QtCore.QRect(20, 710, 381, 121)) self.frame.setLineWidth(2) self.frame.setMidLineWidth(0) # 用调色板设置边框颜色 palette = self.frame.palette() palette.setColor(QtGui.QPalette.WindowText, QtCore.Qt.white) self.frame.setPalette(palette) self.frame.setObjectName("frame")
方式二:完全用样式表定义边框
直接通过样式表完整定义边框属性,此时可以去掉原生的setFrameShape、setLineWidth等设置(样式表优先级更高,这些设置会被覆盖):
self.frame = QtWidgets.QFrame(self) self.frame.setGeometry(QtCore.QRect(20, 710, 381, 121)) self.frame.setStyleSheet(""" QFrame#frame { border: 2px solid white; } """) self.frame.setObjectName("frame")
注意:不要同时混用原生边框设置和不完整的样式表定义,这会导致边框渲染异常。
内容的提问来源于stack exchange,提问作者Pablo Ghirardi
相关产品推荐
相关产品推荐

