17黑马QT笔记之样式表

17黑马QT笔记之样式表

1 样式表的概念:由一系列的样式规则构成。
1)样式表的格式1:
在这里插入图片描述
其中,selector选择器一般是类名,即控件,例如QComboBox类。attribute代表该样式表中的属性,value代表属性值。

2)为了方便,样式表也允许同时设置多个控件,即样式表的格式2:
在这里插入图片描述
即:
在这里插入图片描述
上面的规则设置了QCheckBox、QComboBox、QSpinBox这三个类的前景色,背景色和字体。即每一个类的这三种属性都被设置了

3 代码实例:
1)

     //1样式表的格式
    //1)利用最简单的样式规则设置
    ui->MyLabel1->setStyleSheet("QLabel{color:red};");
    //2)利用rgb函数设置
    ui->MyLabel1->setStyleSheet("QLabel{background-color:rgb(0,255,255)};");

    //3)使整个窗口使用标签时都是这种属性(上面只是单个)
    this->setStyleSheet("QLabel{color:red;background-color:rgb(0,255,255)};");

2)因为我只设定一个标签,所以当我设置整个窗口使用标签时,都会以这种属性出现,即第三步代码。结果:
在这里插入图片描述

4 方框模型:在样式表中,每个控件都被看作成一个方箱,由四部分组成。分别为空白,边框,填充,和内容。对于一个平面部件—例如一个空白,边框和填充都是0像素的部件而言,这四个矩形完全重合的。

4.1概念说明:
1)空白(margin):空白区域位于边框外,并且总是透明的。
2)边框(border):边框为部件提供了四周的框架,其border-style属性可以设置为一些内置的框架风格,如inset,outset,solid和ridge。
3)填充(padding):填充在边框和内容区域之间提供了空白间隔。
4)内容(context):就是我们控件显示的部分,例如上面的QLabel控件显示Hello。

4.2图片说明,总共四个矩形:
在这里插入图片描述
5 添加背景图:

    //2添加背景图  使用url函数
    ui->MyLabel3->setStyleSheet("QLabel{background-image:url(://sunny.png)};");

结果:可以看出上面的代码效果不能完整的显示一张图片,且窗口改变时不能自动适应大小。
在这里插入图片描述
6 创建可伸缩样式(边框图):
默认情况下,通过background-image指定的背景图片会自动重复平铺。 要想解决上面的情况,则需要边框图,而不是背景图平铺。 一个"边框图片"被分为九个部分(九宫格),当一个部件的边框被填充时,四角的格子通常不会发生变化,而其余的五个格子则可能被拉伸或平铺以填充可用空间。
1)代码:

    //3添加边框图
    ui->MyLabel3->setStyleSheet("QLabel{border-image:url(://sunny.png)};");
   //后面的六个参数意思是对图片的四周裁剪并扩伸
   //ui->MyLabel3->setStyleSheet("QLabel{border-image:url(://sunny.png) 10 10 10 10 stretch stretch};");

2)结果:可以看出能完整显示图片(我的不能适应大小,可能前面的代码不同导致)。
在这里插入图片描述
7 控制控件大小:

min-width和min-height两个属性可以用来指定一个部件的内容区域的最小大小。这两个值将影响部件的minimumSizeHint(),并在布局时被考虑。例如:

QPushButton{

            min-width:43px;

            min-height:23px;

}

如果该属性没有被指定,最小大小将从部件的内容区域和当前样式表中继承。但一般不在代码写,因为ui的右下角属性有,即minimumSize和maximumSize。

8 处理伪状态:

部件的外观可以按照用户界面元素状态的不同来分别定义,这在样式表中被称为“伪状态”。例如,如果我们想在一个pushbutton在被按下的时候具有sunken的外观,我们可以指定一个叫做:pressed的伪状态。

QPushButton {

       border:2px outset green;

       background:gray;

QPushButton:pressed {

      border-style:inset;

}

伪状态列表:

伪状态 描述

:checked 部件被选中

:disabled 部件被禁用

:enabled 部件被启用

:focus 部件获得焦点

:hover 鼠标位于部件上

:indeterminate checkbox或radiobutton被部分选中

:off 部件可以切换且处于off状态

:on 部件可以切换且处于on状态

:pressed 部件被鼠标按下

:unchecked 部件未被选中

例子代码:

    //4伪状态处理 :hover表示位于按钮换状态即换图 格式以这个为准(上面没那么好)  主要是分号的问题 在花括号里面
    ui->pushButton->setStyleSheet("QPushButton{border-image:url(:/sunny.png);}"
                                  "QPushButton:hover{border-image:url(:/face.png);}"
                                  "");

结果就是鼠标在按钮内显示其他图片。

总结样式表:基本都懂了,不用刻意去记,用的时候再看看即可。

视频源文档的该节内容,可以参考以下文章:
Qt样式表源文档内容

发布了54 篇原创文章 · 获赞 1 · 访问量 680

猜你喜欢

转载自blog.csdn.net/weixin_44517656/article/details/105734429