转自:http://www.linuxidc.com/Linux/2010-12/30223p6.htm
Qt程序一直给人的印象是正规的GUI程序的模样.在嵌入式Linux下,Qtopia的桌面看起来跟WinCE桌面没有什么两样.相对IPHONE那样的漂亮界面.实在没有什么吸引力.
|
上述语法表示是QPushButton类定制,使用红色,没有边框,右边留空20像素,字体采用加粗的15号字.完整的定义可以参考CSS定义
http://www.w3.org/Style/CSS/
我推荐一个关于CSS学习的属性查找的中文网站 http://www.w3school.com.cn/css/index.asp
其中类名可以更进一步细化成控件里面的子控件,子类名它用::与前面类隔开
|
上面两例中,第一例表示下拉列表里面的在下拉按钮定制,第二例是对LIST控件的列对象的控制。不同的控件可以定制哪一些子控件,可以参考
<<Qt Style Sheets Examples>>这里有完整的示例
http://doc.trolltech.com/4.6/stylesheet-examples.html
2.2 换肤的格式
换图片的话一般采用如下定义
|
其中的pic/play.png将会显示在界面上的按钮的位置.
为了精确的定制界面可以用下列参数来控制控件的坐标和大小
|
QT窗口默认是有标题栏和边框的,这样显示出来会破坏皮肤的效果,所以一般支持皮肤的程序在启动时要把边框去掉。
一般是在窗口的构造函数调用setWindowFlags(),参见如下语句
setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindwHint);
2.3 动态效果
在具体设计时,往往还要采用行为定义.比如按下某个按钮时采用某一个图片,光标移到某个控件上,界面发生变化等。
QStyle 中,称某一个控件的动态行为称为Pseudo-States(伪状态),它是用类名后面接:来表示。
|
上例是定义按钮按下时采用哪一个图片
|
上面几个例子中,分别表示
第一个表示当光标划过QPushButon时,颜色变红。第二个表示当光标没有划过时,颜色为红色。第三个表示光标划过QCheckBox时,如果打上标记的,则变红。第四个表示当光标划过QPushButon时,如果没有按下,则颜色变红。
3.qplayer的应用
我拿上一次的实例来加入皮肤功能。首先我从MPlayer的官网下载一些现成的皮肤进入改造来加入
我用 http://www.mplayerhq.hu/MPlayer/skins/handheld-1.0.tar.bz2 这个不规则的皮肤来定义我的qplayer