Qss学习之一(属性设置)

本文只介绍如何设置参数,不讲解有哪些属性参数。


qss通过/*selector:declaration*/设置其属性参数等

我们在本地创建一个qss文件,然后在代码中加载即可

QFile qss("testqss.qss");
qss.open(QFile::ReadOnly);
qApp->setStyleSheet(qss.readAll());
qss.close();


1、简单的qss语法

/*设置QWidget且obejectname为testwidget的属性*/

QWidget#testwidget
{
background-color:rgb(0,0,0);
}
/* cpp中的语句

QWidget* pWidget = new QWidget;

pWIdget->setObjectName("testwidget");

*/


/*所有QPushButton及它的子类生效*/
QPushButton
{
color:rgb(0,0,0);
}


/*只对QPushButton生效,对其子类不生效*/
.QPushButton
{
color:rgb(0,0,255);
}

/* cpp中的代码
QPushButton* p3 = new CPushButtonSub("subbutton", this);

CPushButtonSub是自己写的一个继承自QPushButton的类,QT判断是否是子类还需要加上Q_OBJECT宏,QT使用的不是C++的运行时多态

p3是不会有上面.QPushButton的属性的,但是会使用前面一个QPushButton的属性的

*/


/*对objectname=testbtn并且有一个属性testProperty=true生效*/
/*此处使用testProperty="true"或则testProperty=true都可以*/
QPushButton#testbtn[testProperty="true"]
{
color:rgb(255,255,255);
}

cpp代码示例

QPushButton* p1 = new QPushButton("objname-testbtn", this);
p1->setObjectName("testbtn");
p1->setProperty("testProperty", true);


/*在QWidget#testwidget中,孩子及子孩子中类型QLineEdit的属性设置*/

/*即设置界面objectnname为testwidget下的所有QLineEdit的属性*/
QWidget#testwidget  QLineEdit
{
color:rgb(0,0,100);
}

代码示例

QWidget* pTestWidget = new QWidget(this);

pTestWidget->setObjectName("testwidget ");

QLineEdit* p4 = new QLineEdit(pTestWidget);


/*在QWidget#testwidget的孩子中QLabel的属性设置,不包括子孩子*/
QWidget#testwidget > QLabel
{
color:rgb(0,0,0);
background:rgb(255,0,0);
}

代码示例

QWidget* pWidgetChild = new QWidget(this);
pWidgetChild->show();
pWidgetChild->move(300, 200);
pWidgetChild->setWindowTitle("objname-childwidget");
pWidgetChild->setObjectName("childwidget");
QLabel* p5 = new QLabel(pWidgetChild);  // p5是testWidget的子widget的孩子,是不会使用上面的属性的


/*多个类型对象设置相同的属性值*/
QToolButton,QComboxBox
{
color:red
}


2、/*伪状态QWidget:xxx*/

即各个控件所支持的一些状态信息

/*伪状态*/
.QPushButton:hover 

color: white
}
.QPushButton:!hover 

color: blue 
}
QCheckBox:hover:checked 

color: red 
}
QCheckBox:unchecked  /*或QCheckBox:!checked也可以*/

color: blue 
}
QCheckBox:!hover 

color: yellow 
}


3、子控件

/*子控件 QWidget::xxx*/
QComboBox::drop-down

image: url(dropdown.png);
subcontrol-origin:margin;
}


4、冲突的解决

会使用更特殊的进行设置,看着都不特殊,就会以qss后面一句为准


参考QT的帮助文档:

The Style Sheet Syntax

Qt Style Sheets Reference

下一篇将介绍各个控件有哪些属性,比如image,color属性等

再往下应该介绍有哪些伪状态

再往下介绍有哪些子控件



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值