QT样式表 V2.0

QT文章列表

样式表大全

Qt css样式大全(整理版)

QT样式表有名称空间

1 子元素

用两个冒号隔开表示名称空间,这样可以非常具体的设置某种类型的对象的样式;如果不加名称空间,则是顶层全局的,全局的表示这个对象以及这个对象的所有孩子都会被设置。

下面的代码只设置滚动条的一部分(子对象sub-line)背景色

QScrollBar::sub-line{background-color:rgb(21,22,26);}

全局的不能和名称空间混用,有名称空间的样式表,则统一都用带名称空间的写法

2 指定某个对象的样式

指定某个对象用  对象类型#对象名称  的方式指定

ui.titleRegionWidget->setStyleSheet(
			"QWidget#titleRegionWidget \
			{ height:40px; color:rgb(255,255,255); \
			  background-color:qlineargradient(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 rgb(255,190,30),stop:1 rgb(255,82,0))\
			}");

背景

如果margin设置为0的父控件,有一个子控件在内部,那这时候你对父控件设置了背景也是白搭,因为都被子控件全挡住了,看不到设置的背景。

透明

background-color: none

边界

margin:30px 0px 30px 0px;

由于对象自己不能往外扩展区域,所以只能出让自己的部分边界区域作为边界

边框

border

边框圆角

Qt 之 设置窗口边框的圆角

this->setStyleSheet(“QWidget{background-color:gray;border-top-left-radius:15px;border-top-right-radius:5px;}”)); 
使用的主要是使用border-radius 属性,关于这个属性,可选的样式有 
border-top-left-radius   设置左上角圆角; 
border-top-right-radius  设置右上角圆角; 
border-bottom-left-radius 设置左下角圆角; 
border-bottom-right-radius 设置右下角圆角; 
border-radius 设置四个角圆角

border-radius:15px

可以使用border-top,border-right,border-bottom,border-left分别设定按钮的上下左右边框,
同样有border-left-color, border-left-style, border-left-width.等分别来设定他们的颜色,样式和宽度

大小范围

sizePolicy

水平策略 

Fixed 水平方向固定大小,具体大小由minimumSize和maximumSize共同决定;超出部分自动截断

Expanding 水平方向随着文本内容变多自动扩展,这时候右侧要么没有控件遮挡,要么放一个弹簧;既然可以自由扩展,但还是会受到minimumSize和maximumSize的约束,所以这时候的maximumSize的值最好设置很大,防止不够用;

垂直策略 同水平策略

间隔

spacing

间隔是两个空间之间的间隔,通常存在于layout的派生类;

layoutSpacing

是指一个布局类(比如Vertical Layout)的两个孩子元素控件之间的间隔;间隔的颜色属于布局对象;如果一个孩子太高被另一个挡住了,这时候只能设置较大的间隙layoutSpacing来让两个孩子都完整显示出来;

QComboBox

QComboBox样式表参考

QScrollBar

如果在代码里加了设置样式表,也在设计器里加了样式表,最后以代码里的起作用。

ui.verticalScrollBar->setStyleSheet("QScrollBar{background:rgb(21, 22, 26);}"
		"QScrollBar::handle{background:rgb(74, 78, 89); border:2px solid transparent;}");

设置主体 

QScrollBar
{
margin:30px 0px 30px 0px;
background-color:rgb(21,22,26);
border: 0px;
width:30px;
}

QT样式表 V2.0_第1张图片

设置完就可以看到效果,如果没有,那就是你的样式表有问题,有时候虽然提示没问题,但实际上,比如你在样式表里加了中文注释,可能就不能在设计器上看到更新的效果了。

下面的设置,请主动把注释去掉

隐藏上下箭头

QScrollBar::add-line:vertical,QScrollBar::sub-line:vertical  {
background: none;
}

QScrollBar::handle:vertical//滑块

{

background-color:#bbbbbb;

width:30px;

border-radius:7px;//圆角

}

QScrollBar::handle:vertical:hover

{

background-color:#9B9B9B;

width:30px;

border-radius:7px;

}

QScrollBar::add-line:vertical//为滚动条下面的箭头区域

{

subcontrol-origin: margin;

border:1px solid rgb(240,241,239);

height:30px;

}

 

QScrollBar::sub-line:vertical//为滚动条上面的箭头区域

{

subcontrol-origin: margin;

border:1px solid rgb(240,241,239);

height:30px;

}

QScrollBar::add-page:vertical//表示未滑过的槽部分

{

background-color:rgb(240,241,239);

}

 

QScrollBar::sub-page:vertical //表示已滑过的槽部分

{

background-color:rgb(240,241,239);

}

QScrollBar::up-arrow:vertical//箭头

{

border:0px;

width:30px;

height:30px;

border-image:url(":/Icons/up_Arrow.png");

}

 

QScrollBar::up-arrow:vertical:pressed

{

border:0px;

width:30px;

height:30px;

border-image:url(":/Icons/up_Arrow_down.png");

}

QScrollBar::down-arrow:vertical

{

border:0px;

width:30px;

height:30px;

border-image:url(":/Icons/down_Arrow.png");

}

 

QScrollBar::down-arrow:vertical:pressed

{

border:0px;

width:30px;

height:30px;

border-image:url(":/Icons/down_Arrow_down.png");

}

参考:https://my.oschina.net/xuxinxin/blog/1791934

 

案例

QScrollBar
{
background-color:rgb(21,22,26);
border: 0px;
width:12px;
}
QScrollBar::add-page:vertical
{
background-color:rgb(21,22,26);
border:none;
}
QScrollBar::sub-page:vertical
{
background-color:rgb(21,22,26);
border:none;
}
QScrollBar::sub-line{background-color:rgb(21,22,26);}
QScrollBar::add-line{background-color:rgb(21,22,26);}
QScrollBar::handle:vertical
{
margin-top: 1px;
margin-bottum: 1px;
background-color:rgb(74,78,89);
border-radius:7px;
border: 0px solid;
max-height:8px;
}

效果如下

渐变色qlineargradient

background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 190, 30),stop:1 rgb(255, 82, 0))

x1,y1,x2,y2,stop这几个都是0-1,数值表示百分比。

渐变过程:X1----X2从左向右渐变;

                   Y1---Y2从上向下渐变。

x1:0, y1:0, x2:1, y2:0,表示左上起点(0,0),右下(1,0)表示从左到右渐变

x1:0, y1:0, x2:0, y2:1,表示左上起点(0,0),右下(0,1)表示从上到下渐变

每一个stop其实表示终点,这个终点之前的上一个stop就是其起点,两个点的颜色就是起点颜色和终点颜色,第一个起点也用stop表示。所以没有start(stop:0 就是起点)

参考:https://blog.csdn.net/u012372584/article/details/81352786

 

你可能感兴趣的:(QT)