Qt样式表(4):属性类型

时间:2024-03-16 16:59:52

Qt样式表(4):属性类型

若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版,该书语法示例短小精悍,对查阅C++知识点相当方便,并对语法原理进行了透彻、深入详细的讲解,可确保读者彻底弄懂C++的原理,彻底解惑C++,知其然更知其所以然。此书是一本全面了解C++不可多得的案头必备图书。

1、各符号的含义
	|:分隔符,比如0 | 1,表示0或者1
	*:表示0或更多,
	+:表示1或更多
	?:表示0或1,比如(on | off)?,表示可取on或off之一,或一个都不取 
	{0,4}:表示0到4,比如Length{0 , 4},表示0到4个Length的值
   示例:
①、{top | bottom | left | right | center}*    //表示可取大括号中任意值的组合,比如top left(表示左上)
②、(Font Style | Font Weight){0, 2} Font Size String
   以上语法表示,其值的格式必须按照如下顺序指定(若顺序不正确,则取值无效):
      “Font Style或Font Weight的值之一或无,字体大小,一个字符串”,
假设Font Style属性类型可取值为italic,Font Weight属性类型可取值为一整数,Font Size属性类型可取值为一像素值,String为一字符串,则以下值是有效的取值
       italic 55px "Calibri"    	//斜体,字的大小为55像素,字体族为Calibri
       900 55px "Calibri"    	//字体粗细为900,大小为55像素,字体族为Calibri
       900 italic 55px "Calibri" 或 italic 900 55px "Calibri"   //Font Style和Font Weight的位置无关紧要
   以下为无效的取值
       900 55px italic "Calibri" 	//Font Size和Font Style的顺序不对
       55px italic "Calibri"     	//原因同上
2、Alignment			值:{top | bottom | left | right | center}*
	对齐方式,比如QPushButton{background-position:top right}   //右上角对齐
3、Url		值:url(filiename)
	其中的filename是本地磁盘或Qt资源系统的文件的名称,比如
QPushButton{background-image:url(F:/1i.png)}   //读取文件F:/1i.png作为背景图像
4、Attachment			值:{scroll | fixed}*          
	滚动或固定,属性background-attachment使用该类型,以用于QAbstractScrollArea
5、Background			值:{Brush | Url | Repeat | Alignment}*   	//参见各属性类型的取值
6、Boolean			值:0 | 1       					//布尔值,取0或1
7、Border				值:{Border Style | Length | Brush}*    	//参见各属性类型的取值
8、Border Image		值:none | Url Number{4} (stretch | repeat) {0, 2}
	该值用于指定边框图像(border-image),注意值的格式,比如
       QPushButton{
   			border-image:url(F:/1x.png) 15 25 15 25 repeat;
        		border-width:55;}   		//指定边框图像还需设置边框宽度
9、Border Style			值:dashed | dot-dash | dot-dot-dash | dotted | double | grovve | inset|outset|ridge|solid|none
	该属性类型用于指定边界线的样式,比如dashed表示虚线,dotted表示点线等
10、Box Colors			值:Brush{1, 4}
	1到4个Brush值,分别指定盒子的top、right、bottom、left边界线,若未指定left,则将与right相同,若未指定bottom,则与top相同,若未指定正确的颜色,则与top的相同,下面为示例:
QLabel{border-color:yellow}   			//四条边界线都为黄色
QLabel{border-color:yellow red}  			//top、bottom为黄色,left和right为红色
QLabel{border-color:yellow red blue}  		//top为黄色,right和left为红色,bottom为蓝色 
QLabel{border-color:yellow red blue green}  	//top为黄色,right为红色,bottom为蓝色,left为绿色 
11、Box Lengths		值:Length{1, 4}
	1到4个Length值,分别指定盒子的top、right、bottom、left边界线,其原理与Box Colos相同。
12、Brush				值:Color | Gradient | PaletteRole
	具体可参见各属性类型的取值,注意:Brush属性类型还可指定渐变色(即Gradient属性类型)
13、Color				值:rgb(r, g, b) | rgba(r, g, b, a) | hsv(h, s, v) | hsva(h, s, v, a) | #rrggbb | Color Name
	指定颜色,从其值可看到,颜色可使用6种方式指定,其中rgb()和rgba()可取0~255之间的值,或一个百分比值,hsv()或hsva中的s和v必须是0~255之间的值,h的值是0~359之间的值,比如
           QLabel{border-color: rgba(111,11,11, 70%);
14、Font				值:(Font Style | Font Weight){0, 2} Font Size String
	字体属性,对该属性取值的讲解,参见本小节开头。
15、Font Size			值:Length       					//字体的大小
16、Font Style			值:normal | italic | oblique				//字体的样式
17、Font Weight		值:normal | bold | 100 | 200 | … | 900		//字体的重量(即粗细)
18、Length			值:Number(px | pt | em |ex )?
	数字后跟一个测量单位(比如像素),在Qt中,必须指定测量单位,为了与早期的Qt版本兼容,大多数情况下,若未指定测量单位,则被视为像素,支持的单位如下:
	px:像素
	pt:点(即1/72英寸)
	em:字体的em宽度,即字母M的宽度
	ex:字体的ex宽度,即字母X的宽度
19、Number			值:一个10进制整数和实数,比如18, 23.46等
20、Origin			值:margin | border | padding | content
	指定盒子模型中的4个矩形,详见盒子模型原理(13.9.2节)
21、PaletteRole		
值:alternate-base | base | bright-text | button | button-text | dark | highlight | highlighted-text | light | link | link-visited | mid | midlight | shadow | text | window | window-text
	该属性类型的取值对应于QPalette::ColorRole枚举。
22、Radius			值:Length{1,2}
	1到2个Length,若只指定了一个Length,则表示角的1/4圆的半径,若指定两个长度,则第一个长度是1/4椭圆的水平半径,第二个长度是垂直半径
23、Repeat			值:repeat-x | repeat-y | repeat | no-repeat
	表示重复性质(可实现图像的平铺),其中repeat-x表示水平方向重复,repeat-y表示垂直方向重复,repeat表示水平和垂直方向重复,no-repeat表示没有重复。
24、Icon				值:(Url (disabled | active | normal | selected)?(on | off) ?) *
	指定图标(图标属性见表13-28)

Qt样式表(4):属性类型

25、Gradient			值:qlineargradient | qradialgradient | qconicalgradient
	指定渐变填充,其中qlineargradient表示线性渐变,qradialgradient 表示径向渐变,qconicalgradient表示圆锥渐变,渐变的原理详见第12章,下面列举几个示例

示例13.18:使用样式表设置线性渐变背景(效果见图13-33)

#include<QtWidgets>
int main(int argc, char *argv[]){    QApplication aa(argc,argv);
    QWidget w;     QPushButton *pb1=new QPushButton("AAA",&w);		pb1->move(22,22);
    pb1->resize(333,133);   //为使效果比较明显,把按钮设置得相对大一点
     aa.setStyleSheet(
        " QPushButton {""background: qlineargradient(   //设置线性渐变背景
x1:0, y1:0, x2:1, y2:1,"				//渐变范围从左上角(0,0),到右下角(1,1)
//起点颜色为红色,中点位置颜色为黄色,终点颜色为绿色
              "stop:0 red, stop: 0.5 yellow, stop:1 green)}"  );
    w.resize(400,300);    w.show();    return aa.exec();	}

Qt样式表(4):属性类型

示例13.19:使用样式表设置圆锥渐变和径向渐变背景(效果见图13-34)
#include<QtWidgets>
int main(int argc, char *argv[]){    QApplication aa(argc,argv);
QWidget w;
QPushButton *pb=new QPushButton("AAA",&w);   pb->move(22,22);  pb->resize(155,133);
QPushButton *pb1=new QPushButton("BBB",&w);  pb1->move(200,22);pb1->resize(155,133);
pb->setObjectName("AAA");    pb1->setObjectName("BBB");  	//设置对象名
aa.setStyleSheet(
" QPushButton#AAA{"  								//设置按钮AAA的样式
    		"background: qconicalgradient("   				//圆锥渐变
   			"cx:0.5, cy:0.5, angle:30,"   				//指定中心点和角度
       		"stop:0 red, stop:0.5 yellow,stop:1 green)}"	//指定渐变颜色
  	" QPushButton#BBB {"  								//设置按钮BBB的样式
        	"background: qradialgradient("      				//径向渐变
        		"cx:0, cy:0, radius: 1,"   					//中心点和半径(即渐变区域)
               "fx:0.5, fy:0.5,"  						//焦点半径位置
               " stop:0 red,stop:0.5 yellow, stop:1 green)}"	//指定渐变颜色
        );
    w.resize(400,300);    w.show();    return aa.exec();	}

Qt样式表(4):属性类型
本文作者:黄邦勇帅(原名:黄勇)