【问题标题】:qt stylesheet not workingqt样式表不工作
【发布时间】:2015-09-19 15:15:52
【问题描述】:

所以我在写一个小程序,代码如下:

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 不会绘制底部边界,我在这里做错了吗?

【问题讨论】:

    标签: python qt pyqt stylesheet


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,成功了!我阅读了文档,它说 WA_StyledBackground:表示小部件应该使用样式化背景绘制,“样式化背景”是什么意思?我是qt新手,我是中国人,我的英语很差,听不懂句子
    • @user2689236 默认从QWidget派生的类忽略样式表,这个属性允许你使用(打开)样式表。
    • 我点击了“这个答案很有用”,页面刚刚弹出“感谢您的反馈!一旦您总共获得 15 个声望,您的投票就会改变......”,也许我没有没有投票权?
    • @user2689236 目前你不能投票给答案,但这不是你的错,一切都很好。
    【解决方案2】:

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

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

    【讨论】:

    • 不工作,如果我把它改成“QtWidgets.QWidget...”,那么所有的小部件都停止绘制底部边框
    猜你喜欢
    • 2013-05-27
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2011-09-16
    • 2011-11-02
    相关资源
    最近更新 更多