2012-03-04 15 views
5

chcę QtextEdit w mojej aplikacji, aby być zielone tak ustawić arkusza stylów doQTextEdit zmiana koloru tła także kolor paska przewijania

background-color: rgb(109, 255, 99); 

Jednak to również zmienić kolor tła z pasków przewijania, a nawet gdy kliknę prawy przycisk myszy w menu tekstowym, pokazane menu jest również zielone i to nie jest to, czego się spodziewałem.

Używam Qt Designer zaprojektować GUI i następnie użyłem UIC wygenerować plik C++.

w C++ plik wygląda tak:

textEdit->setAutoFillBackground(false); 
textEdit->setStyleSheet(QString::fromUtf8("background-color: rgb(109, 255, 99);")); 
textEdit->setReadOnly(true); 

ktoś wie jak ustawić kolor tła jedynie dla obszaru, na którym tekst będzie?

Dzięki

+0

zorientowaliśmy się, że to proste, dodam normalnej odpowiedzi tak szybko, jak to niech mnie i oznaczyć ją przyjął – Jan

Odpowiedz

9

Wszystkie obiekty potomne edycję tekstu dziedziczą arkusza stylów, więc wszystkie dzieci (np menu kontekstowe) będzie miał zielone tło.

Należy wybrać QTextEdit tylko w arkuszu stylów, tj

textEdit->setStyleSheet("QTextEdit { background-color: rgb(109, 255, 99) }"); 

pamiętać, że można ustawić arkusza stylów na poziomie aplikacji, też tak, że wszystkie QTextEdit w aplikacji będzie mieć swój określony background:

qApp->setStyleSheet("QTextEdit { background-color: rgb(109, 255, 99) }"); 
+0

Dzięki za odpowiedź, to jest dokładnie tam, gdzie problem był – Jan

+0

to nie wydają się działać dla mnie, ponieważ przyciski były nadal kolorowy - musiał to zrobić: QPalette * palette = new QPalette(); paleta-> setColor (QPalette :: Base, QColor (0,0,0)); paleta-> setColor (QPalette :: Text, QColor (128 128 128)); textEditor-> setPalette (* palette); dla szarego tekstu na czarnym tle, nie zrobił tego żaden z przycisków. Myślę, że twoja odpowiedź była właściwa, ale wydaje się, że w jakiś sposób przyciski są zawarte w klasie "QTextEdit". – osirisgothra