2017-03-23 3 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()