Qt Creator stylesheet 简单应用
先说说自己的情况吧,大龄转行,凭借自己的爱好,依然转到IT 圈,本来学的嵌入式,到现在驱动不会写,后来到了现在的公司,烧写内核,Qt 移植,串口程序编写,后来竟让我写开了Android ,看来我快成全才了,呵呵..............
做了有一年多的程序员了,说实在的感触还是满多的。其中有一点恨重要,那就是程序员的做事思路,整个简单词就是做事步骤。真的,我在这上边吃了老多亏了。就拿这次更改Qt 程序来说吧。改个界面,我用了两天!还是最简单的那种界面,真有种要死的感觉!!!!
还是说说我们程序原的思考方式吧! 永远要记住一句话,没有理论基础的开发,都是瞎扯蛋!!!!!什么是理论基础,就是你小学方程的解题步骤!
再说说做事步骤,首先要知道问题出那了,就拿这次改界面来说,就是不知道stylesheet 怎么用,控件背景效果怎么设置,然后就那自己瞎折腾,耗时,费力,伤神。然后就是查资料,有很多人总结好的文档,拿过来用心读一下,马上就明白了,在实践练习一下,时间都用不了半天,这些知识就熟知了。废话不多说了,来看看这个stylesheet
用法:
1.在Qt Creator 的设计里用
就在图中偏下方的位置。
注意里面的双引号,因为在点击“添加资源” 中设计到图片的都是不给加双引号的。
2.在代码中应用
ui->ButtonChn0->setStyleSheet(QString::fromUtf8("background-color: rgb(255, 0, 0);border-style: outset;border-width: 2px;border-radius: 10px;border-color: beige;color: rgb(255, 255, 255);padding: 4px;font: 20pt \"wenquanyi\";"));
就这么简单的书写格式。还要注意双引号的“\”,不然语法错误。
3.还差什么
当然是接触的理论知识了啊!下面的是别人文当上拷贝下来的!
QtComponent Style Sheet
说明:QtStyle Sheets支持以CSS的格式来定制和修改控件的外观。
以下为一些常用格式:
1 通用属性
一 边框
1Border
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
1 | Border | 2px solid#8f8f91 | 所有控件 | border: 10pxsolid #8f8f91; |
基本语法:border: border-width || border-style || border-color
border:宽度 样式 颜色;
说明:该属性是复合属性。请参阅各参数对应的属性。
border-topborder-rightborder-bottomborder-left同上。
2border-style
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
2 | border-style | solid | 所有控件 | border-style :outset |
基本语法
border-style: none | hidden | dotted | dashed | solid | double | groove | ridge |inset | outset
语法取值
none: 默认值。无边框。不受任何指定的border-width值影响
hidden: 隐藏边框。IE不支持
dotted: 在MAC平台上IE4+与WINDOWS和UNIX平台上IE5.5+为点线。否则为实线
dashed: 在MAC平台上IE4+与WINDOWS和UNIX平台上IE5.5+为虚线。否则为实线
solid: 实线边框
double: 双线边框。两条单线与其间隔的和等于指定的border-width值
groove: 根据border-color的值画3D凹槽
ridge: 根据border-color的值画3D凸槽
inset: 根据border-color的值画3D凹边
outset: 根据border-color的值画3D凸边
border-top-styleborder-right-styleborder-bottom-styleborder-left-style同上。
3Border-width
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
3 | Border-width | 8px | 所有控件 | border-width:8px; |
基本语法
border-width: medium | thin | thick | length
语法取值
medium: 默认值。默认宽度
thin: 小于默认宽度
thick: 大于默认宽度
length: 由浮点数字和单位标识符组成的长度值。不可为负值。请参阅长度单位
border-top-widthborder-right-widthborder-bottom-widthborder-left-width同上。
4Border-color
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
3 | border-color | #8f8f91 | 所有控件 | border-corlor:red |
基本语法:border-color: color
5Border-radius
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
2 | Border-radius | 一般控件最大值10px QPushButton为30px | 所有控件 | border-radius:30px;
|
基本语法:border-radius:26px;
功能:圆角角度
6border-image
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
2 | border-image |
| 所有控件 | border-image:url(:/newPrefix/1.png);
|
基本语法:border-image:url(:/newPrefix/1.png);
二 背景
1background
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
2 | background |
| 所有控件 | background:white url(:/newPrefix/1.png) repeat-y fixed right top; |
基本语法:
background: background-color || background-image || background-repeat ||background-attachment || background-position
2background-color
同边框里的Border-color
3background-image
同边框里的Border-image
4background-repeat
基本语法:
background-repeat: repeat | no-repeat | repeat-x | repeat-y
语法取值
repeat: 默认值。背景图像在纵向和横向上平铺
no-repeat: 背景图像不平铺
repeat-x: 背景图像仅在横向上平铺
repeat-y: 背景图像仅在纵向上平铺
5background-attachment
基本语法
background-attachment: scroll | fixed
语法取值
scroll: 默认值。背景图像是随对象内容滚动
fixed: 背景图像固定
6background-position
编号 | 属性 | 示例值 | 适用组件 | 使用示例 |
2 | background-position | center | 所有控件 | border-position:top
|
基本语法
background-position: length || length
background-position: position || position
语法取值
length: 百分数|由浮点数字和单位标识符组成的长度值。请参阅长度单位
position: top| center | bottom | left | center | right
2 渐变色
1 角度渐变
基本格式:qconicalgradient(cx,cy,angle, stop:positionrgba(R,G,B,A))
语法取值
angle: 渐变角度,值为0-360度
cx: 起始X坐标,值为0-1
cy: 起始Y坐标,值为0-1
stop:positionrgba(R,G,B,A): 渐变的位置和颜色
position渐变位置,,值为0-1
R,G,B,A分别为红,绿,黑,透明色
实例:
border-color:qconicalgradient(cx:0, cy:0, angle:135, stop:0 rgba(255, 255, 0, 69),stop:0.375 rgba(255, 255, 0, 69), stop:0.423533 rgba(251, 255, 0,145), stop:0.45 rgba(247, 255, 0, 208), stop:0.477581 rgba(255, 244,71, 130), stop:0.518717 rgba(255, 218, 71, 130), stop:0.55 rgba(255,255, 0, 255), stop:0.57754 rgba(255, 203, 0, 130), stop:0.625rgba(255, 255, 0, 69), stop:1 rgba(255, 255, 0, 69));
2 线性渐变
基本格式:qlineargradient(spread:type,x1, y1, x2, y2,stop:positionrgba(R,G,B,A))
语法取值
spread:type: 渐变类型type有三种:
pad–平铺
repeat–重复
reflect–反射
x1: 起始X坐标,值为0-1
y1: 起始Y坐标,值为0-1
x2: 结束X坐标,值为0-1
y2: 结束Y坐标,值为0-1
stop:positionrgba(R,G,B,A): 渐变的位置和颜色
position渐变位置,,值为0-1
R,G,B,A分别为红,绿,黑,透明色
实例:
border-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(134,245, 99, 255), stop:0.514124 rgba(235, 148, 61, 255), stop:0.954802rgba(115, 87, 128, 255));
3 辐射渐变
基本格式:qradialgradient(spread:type, x1, y1, x2, y2, radius ,stop:positionrgba(R,G,B,A))
语法取值
spread:type: 渐变类型type有三种:
pad–平铺
repeat–重复
reflect–反射
x1: 起始X坐标,值为0-1
y1: 起始Y坐标,值为0-1
x2: 结束X坐标,值为0-1
y2: 结束Y坐标,值为0-1
radius:半径,值
stop:positionrgba(R,G,B,A): 渐变的位置和颜色
position渐变位置,,值为0-1
R,G,B,A分别为红,绿,黑,透明色
实例:
background-color:qradialgradient(spread:repeat, cx:0.5, cy:0.5, radius:0.077, fx:0.5,fy:0.5, stop:0 rgba(0, 169, 255, 147), stop:0.497326 rgba(0, 0, 0,147), stop:1 rgba(0, 169, 255, 147));
4.补充
有些控件添加背景图片的时候,因为不想子类继承,需要加上 #控件名{。。。。。。。 }例如:
#base_frame{background-image: url(":/image/image/background294×850.png");}
要想了解更多:http://blog.csdn.net/cgzhello1/article/details/8514113