2015-07-02 4 views
1

Так что я пишу небольшую программу, вот код:кварта таблицы стилей не работает

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

При попытке использовать его в производных классах возникают проблемы со стилями. Чтобы решить проблему, попробуйте использовать это:

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

В этом коде QtCore.Qt.WA_StyledBackground означает, что виджет должен быть нарисован с использованием стилизированного фона.

+0

спасибо, что работало! я прочитал документ, он говорит, что WA_StyledBackground: указывает, что виджет должен быть нарисован с использованием стилизованного фона, что означает «стиль фона»? я новичок в qt, и я китайский, мой плохой английский просто не может понять предложения –

+0

@ user2689236 По умолчанию, полученные из классов QWidget игнорируют таблицу стилей, этот атрибут позволяет использовать (включить) таблицу стилей. – Chernobyl

+0

получил это, thx много! –

0

Путем я использую его и работает, о том, для какого типа объекта является стилем предназначен, в вашем случае будет:

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

не работает, если я изменю его на «QtWidgets.QWidget ...», то все виджеты перестанут рисовать нижнюю границу –

Смежные вопросы