我一直拒绝问这个看似 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
从设计器本身设置我的颜色 - 通过在选项中指定我的自定义颜色来设置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);