【Qt】Qt开发小知识—使用【setProperty + 样式表】实现小部件的样式控制

阅读 198

2022-02-17

使用【setProperty + 样式表】实现对QWidget的动态样式加载

文章目录

一、背景

​ QObject的setProperty ()函数功能比较好用。本文总结几点在实际开发中常用的场景:

​ (1)定制单个控件的样式。

​ (2)实现页面换肤。

​ (3)向部件传递动态参数(可以修改、删除)。

二、定制单个控件的样式

​ 当在QtCreator下拖出多个相同类型的控件时,其名称是软件生成的(除非自己修改)。当把样式表文件放在一个单独的文件中进行加载时,这时候,就可以使用setProperty ()来增加控件对象属性。然后,在样式表文件中,设置对应的属性,即可定制某个相同类型的控件样式了。

在这里插入图片描述

​ 如上图所示,创建了两个QWidget,三个QPushButton。在样式表文件中将使用如下代码定制分别定制这两个QWidget:

QWidget[name="left"]{
    border:1px solid #242424;
    border-radius:0px;
    background:#242424;
}

QWidget[name="top"]{
    border:1px solid #242424;
    border-radius:0px;
    background:#444444;
}

​ 然后,使用setProperty ()函数添加对象属性:

ui->widget->setProperty("name","top");
ui->widget_2->setProperty("name","left");

​ 在使用qApp->setStyleSheet()设置样式表文件,即可。

​ 生成效果图如下:
在这里插入图片描述

三、实现页面换肤。

​ 页面换肤方法不止一种,本文描述使用setProperty()函数来实现(注:可能比单独加载样式表文件要复杂些,可以当做一种思路吧,哈哈)

​ 【核心思路】

​ 在样式表中创建多个样式,然后当更换皮肤信号发起后,重新使用setProperty()设置对应样式表标记下的部件,然后再重新加载样式表文件即可。

​ 这里以绿色按钮为例:

void MyWidget::on_pushButton_clicked()
{
    ui->widget->setProperty("color","top_green");
	//加载样式表文件
    loadStyleSheet();
}

​ 样式表文件:

QWidget[color="top_green"]{
    border:1px solid #242424;
    border-radius:5px;
    background:#019858;
}

​ 【效果】:
请添加图片描述

精彩评论(0)

0 0 举报