2017-03-23 12 views
0

色と線幅を設定したい線を描きます。私のアプリケーションをカスタマイズ可能にするために、このプロパティをスタイルシートに入れたいと思います。どうすればいい? QColorをサブクラス化しようとしましたが、線はまだ黒です。ここで私が試したものです:スタイルシートで線の色を変更

import sys 

from PyQt5.QtWidgets import QWidget, QApplication 
from PyQt5.QtGui import QPainter, QColor 


class Main(QWidget): 
    def paintEvent(self, e): 
     painter = QPainter() 
     painter.begin(self) 

     painter.setPen(LineColor()) 
     painter.drawLine(0, 0, 100, 100) 

     painter.end() 


class LineColor(QColor): 
    ''' Exposes a class, so that its color can be set using the style sheet ''' 


qss = ''' 
LineColor { 
    color: red; 
} 
''' 


app = QApplication(sys.argv) 
app.setStyleSheet(qss) 

main = Main() 
main.show() 

sys.exit(app.exec_()) 

答えて

0

あなたは何をしようとしている、IMHOはできません。 QMainWindowをサブライン化したので、setStyleSheetをオーバーライドしてスタイルシートを解析し、それに応じて色を設定してください。

class Main(QWidget): 

    def __init__(...) : 
     ... 
     ... 
     ... 

     self.myLineColor = QColor(Qt::black) 
     ... 
     ... 

    def setStyleSheet(sheet) : 

     # Your code to parse the stylesheet 
     self.myLineColor.setRgb(...) # or setNamedColor or similar. 

     QMainWindow::setStyleSheet(self, sheet) 

    def paintEvent(self, e): 
     painter = QPainter() 
     painter.begin(self) 

     painter.setPen(self.myLineColor) 
     painter.drawLine(0, 0, 100, 100) 

     painter.end() 
関連する問題