Как установить пользовательский цвет текста в QTextEdit? - PullRequest
1 голос
/ 22 апреля 2011

Я не стал задавать этот, казалось бы, вопрос n00b, но все мои недавние попытки решить эту задачу потерпели неудачу. Вот то, что я уже пробовал, все провалилось! Может ли быть так, что мой OpenSuse 11.3 устанавливает системные настройки стиля, которые по умолчанию применяются даже к моему приложению Qt?

//I have some QTextEdit created in QDesigner -- call it myQEdit
QString str = "some content i want to display"
//trial one:
QString my_html_template = "<html><head></head><body style=\"color:__color__;\">__content__</body></html>"
myQEdit->document()->setHtml(my_html_template.replace("__color__","#99ff00").replace("__content__",str));

, что не получается, тогда я попытался ...

//trial two:
myQEdit->setDocument(new QTextDocument(str,this));
myQEdit->document()->setDefaultStyleSheet(" body { color:#99ff00;}");

Я даже пытался установить флаг !important css на значение color, которое я передаю как:

но это тоже не удалось!

myQEdit->document()->setDefaultStyleSheet(" body { color:#99ff00 !important;}");

Поэтому я решил установить цвет моего QTextEdit от самого дизайнера - указав свой собственный цвет в опции для установки необработанного html-содержимого QTextEdit. Хотя я не изменял содержание программно, использовался нужный цвет. Но в тот момент, когда я установил пользовательский контент следующим образом:

myQEdit->setDocument(new QTextDocument(str));

Я теряю настройки цвета, которые я установил с QDesigner на QTextEdit. Итак, как правильно достичь желаемого? Я знаю, что это можно сделать каким-то образом ...

Наконец : После использования подсказки из принятого ответа ниже, вот как я решил это:

myQEdit->setDocument(new QTextDocument(str,this));
QPalette pal;
pal.setColor(QPalette::Text, QColor::fromRgb(0,150,0));
myQEdit->setPalette(pal);

1 Ответ

4 голосов
/ 22 апреля 2011

Я успешно изменил цвет текста QLabel и QPlainTextEdit, изменив палитру:

QPalette pal;
pal.setColor(QPalette::Window, bgColor);
pal.setColor(QPalette::WindowText, fgColor);
pal.setColor(QPalette::Text, fgColor);
mylabel->setPalette(pal);
...