Я не стал задавать этот, казалось бы, вопрос 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);