如何在QTextEdit中设置自定义文本颜色?

时间:2011-04-22 16:23:44

标签: c++ css qt qtextedit

我一直拒绝问这个看似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值上设置color css标志:

但这也失败了!

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

所以我决定从设计师本身设置QTextEdit的颜色 - 通过在选项中指定我的自定义颜色来设置QTextEdit的原始html内容。虽然我没有以编程方式更改内容,但使用了所需的颜色。但是我设置这样的自定义内容的那一刻:

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

我放弃了QDesignerQTextEdit设置的颜色设置。那么实现目标的正确方法是什么?我知道它可以通过某种方式完成......

最后: 使用下面接受的答案中的提示后,我就是这样解决的:

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

1 个答案:

答案 0 :(得分:4)

通过更改调色板,我已成功更改QLabelQPlainTextEdit的文字颜色:

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