使用Qt 4如何设置QLabe中字体的颜色

Link   : http://blog.csdn.net/qter_wd007/article/details/5919006

(一般设置字体,线条的颜色用setPen(), 设置背景色用setBrush()  填充)


其实,这是一个比较常见的问题。大致有几种做法:一是使用setPalette()方法;二是使用样式表;三是可以使用QStyle;四是可以在其中使用一些简单的HTML样式。下面就具体说一下,也算是个总结吧。

 

第一种,使用setPalette()方法如下:

 

...

QLabel *label = new QLabel(tr("Hello Qt!"));

QPalette pe;
pe.setColor(QPalette::WindowText,Qt::white);
label->setPalette(pe);

 

第二种,使用样式表如下:

 

1:setStyleSheet()

     这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。

    亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图                             片!!

             ②:同时:对于一个父窗口而言:如果我们用setStyleShette设置了其样式,而对于其子窗口:如果没有用同样的函数来设                    置的话, 则其子窗口的样式和其父窗口完全一致,亦即:其集成了自己父窗口的样式!

             ③:延伸:对顶层窗口(没有父窗口),其有若干个子窗口,则当我们用setStyleShette来设置这个顶层窗口的样式后,依据①可知:该父窗口本身没有任何变化,亦即设置没有生效;而其子窗口:只要子窗口本身没有用setStyleShette来设置自己的样式表,则其就是用的自己父窗口的样式表!!



 

//具体情形可以看Qt Assistant

 

第三种,使用QStyle,在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。

 

第四种,使用一些简单的HTML格式:

 

QLabel *label = new QLabel(tr("Hello Qt!"));

QLabel *label = new QLabel("<h2><i>Hello</i><font color=red>Qt!</font></h2>");


你可能感兴趣的:(使用Qt 4如何设置QLabe中字体的颜色)