qt 样式表不工作
qt stylesheet not working
所以我在写一个小程序,代码如下:
import sys
from PyQt5.Qt import QApplication
from PyQt5 import QtWidgets
class CMyWidget(QtWidgets.QWidget):
def __init__(self,p = None):
super(CMyWidget,self).__init__(p)
if __name__ == "__main__":
app = QApplication(sys.argv)
#w = QtWidgets.QWidget() #this will be ok #1
w = CMyWidget() #2
label = QtWidgets.QLabel(w)
label.setText("12345")
btn = QtWidgets.QPushButton(w)
btn.setText("X")
hlayout = QtWidgets.QHBoxLayout(w)
hlayout.addWidget(label)
hlayout.addWidget(btn)
w.setStyleSheet("border:none;"\
"border-bottom:5px solid rgb(255,0,0)")
w.show()
sys.exit(app.exec_())
问题是如果我使用#1
,那么一切正常,绘制所有小部件的底部边框;但是如果我更改为#2
,只有子部件绘制底部边框,CMyWidget
不会绘制底边框,我这里做错了吗?
当您尝试在派生 类 中使用样式表时存在一些问题。要解决您的问题,请尝试使用此方法:
w = CMyWidget()
w.setAttribute(QtCore.Qt.WA_StyledBackground)
在此代码中 QtCore.Qt.WA_StyledBackground
表示应使用带样式的背景绘制小部件。
我使用它和工作的方式是说明样式适用于什么类型的对象,在你的情况下是:
w.setStyleSheet( "QtWidgets.QWidget { border:none; border-bottom:5px solid rgb(255,0,0)}")
所以我在写一个小程序,代码如下:
import sys
from PyQt5.Qt import QApplication
from PyQt5 import QtWidgets
class CMyWidget(QtWidgets.QWidget):
def __init__(self,p = None):
super(CMyWidget,self).__init__(p)
if __name__ == "__main__":
app = QApplication(sys.argv)
#w = QtWidgets.QWidget() #this will be ok #1
w = CMyWidget() #2
label = QtWidgets.QLabel(w)
label.setText("12345")
btn = QtWidgets.QPushButton(w)
btn.setText("X")
hlayout = QtWidgets.QHBoxLayout(w)
hlayout.addWidget(label)
hlayout.addWidget(btn)
w.setStyleSheet("border:none;"\
"border-bottom:5px solid rgb(255,0,0)")
w.show()
sys.exit(app.exec_())
问题是如果我使用#1
,那么一切正常,绘制所有小部件的底部边框;但是如果我更改为#2
,只有子部件绘制底部边框,CMyWidget
不会绘制底边框,我这里做错了吗?
当您尝试在派生 类 中使用样式表时存在一些问题。要解决您的问题,请尝试使用此方法:
w = CMyWidget()
w.setAttribute(QtCore.Qt.WA_StyledBackground)
在此代码中 QtCore.Qt.WA_StyledBackground
表示应使用带样式的背景绘制小部件。
我使用它和工作的方式是说明样式适用于什么类型的对象,在你的情况下是:
w.setStyleSheet( "QtWidgets.QWidget { border:none; border-bottom:5px solid rgb(255,0,0)}")