qt样式表不起作用

时间:2015-07-02 07:57:14

标签: python qt pyqt stylesheet

所以我正在写一个小程序,这里是代码:

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我不会画下边框,我在这里做错了吗?

2 个答案:

答案 0 :(得分:3)

当您尝试在派生类中使用样式表时,样式表存在一些问题。要解决您的问题,请尝试使用:

w = CMyWidget()    
w.setAttribute(QtCore.Qt.WA_StyledBackground)      

在此代码中QtCore.Qt.WA_StyledBackground表示应使用样式化背景绘制窗口小部件。

答案 1 :(得分:0)

我使用它和工作的方式是说明样式的对象是什么类型,在你的情况下将是:

w.setStyleSheet( "QtWidgets.QWidget { border:none; border-bottom:5px solid rgb(255,0,0)}")
相关问题