Jak ustawić kolor tekstu i tła QLabel
?
180
Najlepszym i zalecanym sposobem jest użycie arkusza stylów Qt .
Aby zmienić kolor tekstu i kolor tła litery a QLabel
, oto co powinienem zrobić:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Możesz również uniknąć używania arkuszy stylów Qt i zmienić QPalette
kolory QLabel
, ale możesz uzyskać różne wyniki na różnych platformach i / lub stylach.
Jak stwierdza dokumentacja Qt:
Nie ma gwarancji, że używanie QPalette będzie działać dla wszystkich stylów, ponieważ autorzy stylów są ograniczeni przez wytyczne różnych platform i przez natywny silnik motywów.
Ale możesz zrobić coś takiego:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Ale jak powiedziałem, zdecydowanie sugeruję, aby nie używać palety i wybrać arkusz stylów Qt.
color
Cechą jest nieskuteczne. Tylko przez HTML<font color="#FFFFFF">...</font>
udało mi się ustawić kolor czcionki (w tym przypadku na biały.color: ;
Wydaje się, że użycie jako „resetowania” działa, ale czy jest to dobra praktyka, czy też jest lepsza metoda?Możesz używać QPalette, jednak musisz
setAutoFillBackground(true);
włączyć kolor tłaDziała dobrze na Windows i Ubuntu, nie grałem z żadnym innym systemem operacyjnym.
Uwaga: Więcej informacji można znaleźć w sekcji QPalette , sekcja dotycząca roli kolorów
źródło
Dodaję tę odpowiedź, ponieważ myślę, że może się to przydać każdemu.
Wchodzę w problem ustawienia kolorów RGBA (czyli koloru RGB z wartością Alpha dla przezroczystości) dla kolorowych etykiet wyświetlanych w mojej aplikacji do malowania.
Kiedy natknąłem się na pierwszą odpowiedź, nie byłem w stanie ustawić koloru RGBA. Próbowałem też takich rzeczy jak:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
gdzie
color
jest kolor RGBA.Więc moim brudnym rozwiązaniem było rozszerzenie
QLabel
i zastąpieniepaintEvent()
metody wypełniania jej prostego ograniczającego.Dzisiaj otworzyłem
qt-assistant
i przeczytałem listę właściwości odwołań do stylu . Na szczęście ma przykład, który stwierdza:QLineEdit { background-color: rgb(255, 0, 0) }
To otwiera mój umysł, robiąc coś takiego jak poniższy kod, jako przykład:
Pamiętaj, że
setAutoFillBackground()
ustawienie wFalse
nie sprawi, że to zadziała.Pozdrowienia,
źródło
JEDYNĄ rzeczą, która działała dla mnie, był HTML.
Okazało się, że jest to o wiele łatwiejsze do zrobienia niż którekolwiek z podejść zautomatyzowanych.
Poniższy kod zmienia kolor tekstu na podstawie parametru przekazanego przez obiekt wywołujący.
źródło
<font/>
tagu (i jest czymś bardziej znanym ludziom HTML: D), a nie tylko kolorem, dzięki czemu zapewnia większą elastyczność.Najlepszym sposobem na ustawienie dowolnej funkcji dotyczącej kolorów dowolnego widżetu jest użycie QPalette .
Najłatwiejszym sposobem znalezienia tego, czego szukasz, jest otwarcie Qt Designer, ustawienie palety QLabel i sprawdzenie wygenerowanego kodu.
źródło
Ten działa idealnie
getColor()
metoda zwraca wybrany kolor. Możesz zmienić kolor etykiety za pomocąstylesheet
źródło