QTextEdit字符串的高亮显示问题

20130222 鬼猫猫 整理 http://www.cnblogs.com/muyr/

解决方法的原始地址 http://www.qtcn.org/bbs/read.php?tid=20335

背景

在实现纯文本的QTextEdit的查找功能的时候,查找对话框以exec方式运行,对QTextEdit的字符串进行查找,对查找的字符串进行高亮显示,可是这时高亮显示的字符串是灰白色的.

QTextEdit窗口为焦点窗口时,高亮显示的颜色为蓝色背景的,当QTextEdit不是焦点窗口时,高亮显示是灰白色背景的. 希望实现的是当QTextEdit 不是焦点窗口的时候,高亮显示的颜色仍然是蓝色背景的

分析

QPalette的ColorGroup是管这个的,正常的是Active状态,失去焦点是InActive,把InActive的:Highlight和HighlightedText的Color设置成Active时的对应Color就行了。

解决

//获得该QTextEdit的QPalette的copy
QPalette p = this->palette();
//分别得到有焦点时高亮的背景色和文本颜色
QColor color1 = p.color(QPalette::Active, QPalette::Highlight);
QColor color2 = p.color(QPalette::Active, QPalette::HighlightedText);

//设置失去焦点时高亮的背景色和文本颜色
p.setColor(QPalette::Inactive, QPalette::Highlight, color1);
p.setColor(QPalette::Inactive, QPalette::HighlightedText, color2);

//把该copy重新设置为QTextEdit的QPalette
this->setPalette(p);

Powered by Sublog

posted @ 2014-03-24 18:20  高清鬼猫猫  阅读(969)  评论(0编辑  收藏  举报