2012-06-05 3 views
8

.qss 파일의 16 진수/rgb 번호에 변수 이름을 지정할 수 있습니까? 어qt StyleSheets의 변수 사용

그래서 내가 스타일 시트의 상단에있는 변수를 정의하고 대신 16 진수 코드를 사용하여 요구 whereever 변수 이름을 사용할 수
myColor = #FFCC08 
QPushButton { background-color: myColor;} 

하십시오. 또한 색상을 변경해야하는 경우 한 곳에서 변경해야하며 파일에 반영됩니다.

나는 또한 Saas을 검색했지만 qt에서 어떻게 사용될 수 있는지 알지 못합니다.

감사합니다 :)

답변

9

당신은 아주 쉽게 자신의 작은 말대꾸를 만들 수 : 변수의 정의와

1.Create 텍스트 파일을.

QPushButton { 
    background-color: @myColor; 
    min-width: @myWidth; 
} 

3.Open 두 파일을 모두 및 정의 파일의 각 변수의 값으로 QSS 파일의 항목을 변경 :

@myColor = #FFDDEE 
@myColor2 = #112233 
@myWidth = 20px 

2.In QSS 파일을 사용 변수 이름이 같은 간단한 형식을 사용 (문자열)을 정의 파일에서 가져옵니다. 그것은 간단한 문자열 교체입니다.

4. 앱에서 전처리 된 qss를 적용합니다.

이것은 가장 간단한 해결책입니다. 앱 외부에서 정의 파일과 qss 파일을 모두 변경하고 코드를 다시 컴파일하지 않고 적용 할 수 있습니다.

+0

시간 내 주셔서 감사합니다. .qss 파일에 정의 된 각 사용자 정의 변수 색상을 실제 색상으로 대체하는 자체 구문 분석기를 작성하는 데 동일한 논리를 사용했습니다. – SAM

3

당신이 단순히 달성하려고하는 것은 순수한 Qt는 스타일 시트를 사용 할 수 없습니다.

당신은 예를 들어, 수정 및 C++ 코드 내에서 스타일 시트를 다시로드하여 비슷한 효과를 얻을 수 있습니다

QString myColor = "#FFCC08"; 
QString styleSheet = "QPushButton { background-color: %1;}"; 
... 
myWidget->setStyleSheet(styleSheet.arg(myColor)); 

을 불행하게도 이것은 몇 가지 단점에게보다는 코드를 변경 디자이너에서 미리보기 (무능력을 가지고 스타일 시트). 그러나 Qt로 얻으려고하는 것과 거의 비슷합니다.

+0

예 위의 방법과 관련된 문제는 각 구성 요소의 C++ 코드에서 스타일 시트 속성을 지정하고 .qss 파일에서 읽지 않는다는 점입니다. 시간 내 줘서 고마워. – SAM