Qt样式表(5):使用样式表设置按钮的外观

Qt样式表(5):使用样式表设置按钮的外观

本文为原创文章,转载请注明出处,或注明转载自“黄邦勇帅(原名:黄勇)

本文出自本人原创著作《Qt5.10 GUI完全参考手册》网盘地址:
https://pan.baidu.com/s/1iqagt4SEC8PUYx6t3ku39Q
《C++语法详解》网盘地址:https://pan.baidu.com/s/1dIxLMN5b91zpJN2sZv1MNg

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

13.10.1 基本规则

子控件使用subcontrol-position和subcontrol-origin属性来确定在父级中的位置。
另外需要注意伪状态的情形,比如对于垂直滚动条将一直处于:vertical伪状态,因此对垂直滚动条样式表的设置都需要指定:vertical伪状态。
部件的渲染顺序:部件被视为彼此叠加的子控件的层次结构,比如,QComboBox的向下箭头子控件的父级是下拉子控件,下拉子控件的父级是QComboBox部件本身,因此,QComboBox先绘制下拉子控件,然后是向下箭头子控件。绘制QComboBox样式表的顺序如下:
 渲染QComboBox,即QComboBox{….}
 渲染下拉子控件,即QComboBox::drop-down{…}
 渲染向下箭头,即QComboBox::drop-arrow{…}

13.10.2 设置各部件样式表的方法

注:以下仅列了部件部分支持的属性、伪状态、子控件
1、按钮相关
在这里插入图片描述

示例13.20:QPushButton和QCheckBox(效果见图13-35、图13-36、图13-37)

#include<QtWidgets>
int main(int argc, char *argv[]){    QApplication aa(argc,argv);
    QWidget w;
    QPushButton *pb=new QPushButton("AAA",&w);   pb->move(20,20);  pb->resize(200,90);
    QPushButton *pb1=new QPushButton("BBB",&w);    pb1->move(230,20);
 //为按钮pb添加菜单
QMenu *pm=new QMenu("AAA");	pm->addAction("111");  pm->addAction("222"); pb->setMenu(pm);
//把pb和pb1设置为自动默认按钮
     pb->setAutoDefault(true); pb1->setAutoDefault(true);
//注意:pbx不是自动默认按钮
		QPushButton *pbx=new QPushButton("DDD",&w);		pbx->move(310,20);
    	QCheckBox *pb2=new QCheckBox("CCC",&w);  pb2->move(20,120);   pb2->resize(200,90);
     aa.setStyleSheet(
        "QPushButton:default {background-color:red;}"  			//默认按钮的背景色为红色
        "QPushButton:open {background-color:rgb(111,111,1);}"  	//选中按钮时的背景色为黄色
"QPushButton::menu-indicator {"   						//设置按钮的菜单指示器 
        		"border:2px solid green;"			//绿色2个像素宽的实线边框边界线
//加载图片作为菜单指示器,读者可加载符合实际需要的图片
       		 "background-image:url(F:/1i.png);"  
        		"subcontrol-position:left center;"   	//设置子控件的位置
        		"width:33px;height:33px;}"          	//设置子控件的大小
         "QCheckBox{background-color:rgb(111,111,1);"    //复选按钮的背景颜色为黄色
        		"spacing:55px;}"               		//设置文字和复选指示器之间的距离为55像素
		//设置复选指示器的背景颜色(红色)及大小
        	"QCheckBox::indicator{background-color:red;width:33;height:33;}"
		//设置复选指示器处于选中状态时的背景色为绿色
        	"QCheckBox::indicator:checked{  background-color:green;}"
        );
    w.resize(400,333);    w.show();    return aa.exec();	}

在这里插入图片描述

示例13.21:QSpinBox(效果见图13-38)
#include<QtWidgets>
int main(int argc, char *argv[]){    QApplication aa(argc,argv);
    QWidget w;
    QSpinBox *pb3=new QSpinBox(&w);    pb3->move(20,20);    pb3->resize(200,90);
     aa.setStyleSheet(
        "QSpinBox::up-button {"    				//设置向上按钮
         		"subcontrol-position:left center;"  	//子控件位于左侧居中
        		"background-color:red;"				//背景色为红色
        		"width:50px;height:90;}"			//子控件大小
        "QSpinBox::up-arrow {"					//设置向上箭头的背景色(绿色),大小,位置
         		"background-color:green;  width:33;height:33;"
"subcontrol-position:right bottom;}"
        "QSpinBox::down-button {background-color:red;width:50px;height:90;}"	//向下按钮
        "QSpinBox::down-arrow {background-color:green;width:33;height:33;}"	//向下箭头
        );
    w.resize(400,333);    w.show();    return aa.exec();}

在这里插入图片描述
本文作者:黄邦勇帅(原名:黄勇)

在这里插入图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值