2012-06-05 22 views
8

Czy istnieje możliwość podania nazwy zmiennej w postaci liczb szesnastkowych/rgb w pliku .qss. EHUżywanie zmiennych w qt StyleSheets

myColor = #FFCC08 
QPushButton { background-color: myColor;} 

tak, że można zdefiniować zmienną w górnej części arkusza stylów i użyć nazwy zmiennej gdziekolwiek wymagane zamiast używania kod szesnastkowy. Również jeśli muszę zmienić kolor, to muszę zmienić w jednym miejscu i będzie to odzwierciedlone w pliku.

Również szukałem Saas, ale nie wiem, jak można go użyć w qt.

Dzięki :)

Odpowiedz

9

Można zbudować własny malutki Sass dość łatwo:

1.Create plik tekstowy z definicjami zmiennych. Użyj prostego formatu tak:

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

2.In QSS korzystać z pliku nazw zmiennych:

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

3.Open oba pliki i dla każdej zmiennej w pliku definicji zmienić jego występowanie w pliku QSS o wartości (ciąg) z pliku definicji. Jest to prosty zamiana ciągów znaków.

4. Zastosuj wstępnie przetworzone qss w aplikacji.

To jest najprostsze rozwiązanie. Możesz zmienić zarówno plik definicji, jak i plik qss poza aplikacją i zastosować go bez ponownej kompilacji kodu.

+0

Dzięki za poświęcony czas. Użyłem tej samej logiki, aby utworzyć własny analizator składni, który zamienia każdy zmienny niestandardowy-kolor zdefiniowany w pliku .qss na rzeczywisty kolor. – SAM

3

Co starasz się osiągnąć po prostu nie jest możliwe przy użyciu czystych arkuszy stylów QT.

można osiągnąć podobny efekt, modyfikując i przeładowywania swoich arkuszy stylów z poziomu kodu C++, na przykład:

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

Niestety to ma kilka wad (niezdolność do podglądu w projektanta, zmiana kodu zamiast arkusz stylów), ale jest prawie tak blisko, jak to możliwe, dzięki Qt.

+0

Tak Rozumiem, ale problem z powyższym podejściem polega na tym, że określamy właściwości arkusza stylów w kodzie C++ dla każdego komponentu i nie odczytujemy z pliku .qss. Dziękuję za Twój czas. – SAM

Powiązane problemy