2014-10-03 34 views
1

我有一個Qt設計器構建的GUI我正在構建PySide框架,並且css文件在設計器工具中正常工作,但在使用pyside-uic工具後,centralwidget對象上的css停止工作。Pyside Qt centralwidget設置樣式表不起作用

我使用pyside-UIC工具如下:

pyside-uic.exe FileIn.ui -o FileOut.py 

在生成的代碼,我有:

self.centralwidget = QtGui.QWidget(MainWindow) 
self.centralwidget.setObjectName("centralwidget") 

對於CSS我有:

MainWindow.setStyleSheet("QWidget#centralwidget{background-color: 
qlineargradient(spread:pad, x1:0.683, y1:1, x2:1, y2:0, stop:0 
rgba(103, 103, 103,255), stop:1 rgba(144, 144, 144, 255)); 
"} 

的第一行在PyCharm中顯示警告:

「實例屬性centralwidget __init__之外定義」在CSS,如果我定位的QWidget的我能得到我想要在中央插件的風格,但它在隨後的乘坐我的GUI的其餘部分。

有什麼建議嗎?

+0

這聽起來像代表你的錯誤。你可以編輯你的問題,包括**你如何使用pyside-uic工具**和**你是如何實現樣式到你的小部件?**你在問題中顯示的代碼不包括任何相關的小部件樣式(CSS) – 2014-10-03 17:15:59

回答

1

您的問題的原因是裸的QWidget沒有背景。您可以將其作爲自定義小部件與自定義paintEvent()或僅使用QFrame來實現。

下面的代碼對我的作品:

#!/usr/bin/env python 

from PySide import QtCore, QtGui 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 

     widget = QtGui.QFrame() 
     widget.setObjectName("centralwidget") 

     self.setCentralWidget(widget) 
     self.resize(480,320) 


if __name__ == '__main__': 

    import sys 

    app = QtGui.QApplication(sys.argv) 
    app.setStyleSheet("#centralwidget { background-color: qlineargradient(spread:pad, x1:0.683, y1:1, x2:1, y2:0, stop:0 rgba(103, 103, 103,255), stop:1 rgba(144, 144, 144, 255)); }") 

    window = MainWindow()  
    window.show() 
    sys.exit(app.exec_()) 
+0

謝謝你,但可悲的沒有區別 – 2014-10-03 18:01:09

+0

@GrazyB,我已經更新了我的答案。 – 2014-10-03 21:08:37

+0

謝謝你,我剛剛看到你的評論,但我設法讓它工作的另一種方式,但我喜歡你的方式更好看,所以我會嘗試和實施這個在我的代碼,看看我如何得到 – 2014-10-03 22:05:53