Qt之样式表使用(十一)

devtools/2024/12/23 1:30:34/

Qt开发 系列文章 - stylesheet(十一)


目录

前言

stylesheet-toc" style="margin-left:0px;">一、样式表stylesheet

二、代码更改

1.特定控件样式

​编辑

2.类型选择器样式

3.ID选择器样式

三、UI上设计

qss%E6%96%87%E4%BB%B6%E8%AE%BE%E8%AE%A1-toc" style="margin-left:0px;">四、qss文件设计

总结


前言

Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的功能来创建美观和响应式的用户界面。样式表(Stylesheet)在Qt中用于自定义控件的外观,类似于CSS在网页中的作用。Qt样式表允许你改变窗口部件(widgets)的颜色、字体、边距等属性,使你的应用程序更具吸引力。


stylesheet" style="background-color:transparent;">一、样式表stylesheet

Qt样式表的语法与CSS非常相似,你可以使用选择器来指定要改变的控件,然后使用属性和值来定义样式。另外Qt样式表支持多种选择器,包括类型选择器、属性选择器、类选择器和ID选择器。

Qt样式表的使用也有多重方式,可以直接在项目中添加代码更换、可以在可视化界面UI上添加更改、也可以通过qss文件导入的方式进行更改。

二、代码更改

创建一个新的项目,编译运行完后,有如下界面。

  

1.特定控件样式

然后再构造函数上,进行样式表的修改,先显示一个部件label1的颜色,代码如下。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 修改一个部件颜色ui->label->setStyleSheet("QLabel {background-color: red;}");
}

2.类型选择器样式

如果要显示全部Label的颜色,则修改如下。

this->setStyleSheet("QLabel {background-color: red;}");

3.ID选择器样式

如果要改变特定部件Label的颜色,则修改如下。

this->setStyleSheet("#label_3 {background-color: red;}");

Qt样式表不仅仅是修改背景颜色,还有一些其它的指令,例如:

  1. background-color:设置背景颜色;
  2. color:设置文本颜色;
  3. font-size:设置字体大小;
  4. border:设置边框;
  5. border-radius:设置边框圆角半径;
  6. padding:设置内边距;
  7. margin:设置外边距;
  8. 等等其他设置,更为具体的参见官方文档。

Qt还允许直接在样式表中使用Qt资源文件,如  background-image:url(:/image/***.png),这使得管理和使用图像资源变得更加方便。

this->setStyleSheet("#label_3 {image: url(image/te.png)}");

Qt还引入了一些特定的伪状态,这些状态对应于Qt控件的特定状态。这些伪状态包括 :disabled:hover(用于鼠标悬停时)、:pressed(用于按钮被按下时)、:checked、:unchecked:indeterminate(对于复选框而言)等。

例如:

this->setStyleSheet("#pushButton:hover {background-color: red;}");

三、UI上设计

双击打开UI设计界面,选中Lable1右键,选择改变样式表,进行如下设计,如下图。

  

也可以修改全部Label的颜色,如下设置。

其它的一些样式属性,同理也可以在上面设置。

qss%E6%96%87%E4%BB%B6%E8%AE%BE%E8%AE%A1">四、qss文件设计

QSS (Qt Style Sheets) 在支持大部分 CSS2.1 特性的基础上,还引入了一些专为 Qt 设计的独有扩展。这些扩展提高了 QSS 在定制 Qt 应用程序界面方面的能力,使得开发者可以更灵活地控制应用程序的外观。

在设计Qt软件,通过导入qss文件,可以使得设计更为便捷,将软件的样式表和程序功能开发很好的分开了,在繁忙时可以分发给不同的人设计。

在构造函数上,添加如下代码,导入qss文件。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QString FilePath = "qss/paramsetting.qss";QFile file(FilePath);if( file.open(QFile::ReadOnly)){QString styleSheet = QString::fromUtf8(file.readAll());this->setStyleSheet(styleSheet);file.close();qDebug()<<"load success";}elseqDebug()<<"load error";
}

qss文件内容如下,示例。

/*按钮QPushButton样式 应用到所有QPushButton类型的按钮*/
QPushButton {  background-color: #4CAF50;  border: none;  color: white;  padding: 10px 20px;  text-align: center;  text-decoration: none;  /*display: inline-block;*/font-size: 16px;  margin: 4px 2px;  /*cursor: pointer;*/ 
}
/*文本QLabel颜色和背景*/
QLabel {  color: red;  background-color: white;  
}
/*特定文本设置*/
#label_3 {image: url(image/te.png);
}
/*QLineEdit边框和圆角*/
QLineEdit {  border: 2px solid #000000;  border-radius: 5px;  
}
/*QPushButton在鼠标悬停时的背景颜色hover 悬停和焦点样式*/
QPushButton:hover {  background-color: #45a049; image: url(:/images/arrow.png); /* 使用自定义的箭头图标 */ 	
}  
QPushButton:focus {  border: 2px solid red;  
}

编译运行,提示导入文件成功,显示如下设置画面。


总结

博文中相应的工程代码Qt-Case.zip 利用Qt开发软件进行编的例程,为博文提供案例-CSDN文库。


http://www.ppmy.cn/devtools/144540.html

相关文章

【论文速读】| FirmRCA:面向 ARM 嵌入式固件的后模糊测试分析,并实现高效的基于事件的故障定位

基本信息 原文标题&#xff1a;FIRMRCA: Towards Post-Fuzzing Analysis on ARM Embedded Firmware with Efficient Event-based Fault Localization 原文作者&#xff1a;Boyu Chang, Binbin Zhao, Qiao Zhang, Peiyu Liu, Yuan Tian, Raheem Beyah, Shouling Ji 作者单位&…

方正畅享全媒体新闻采编系统 reportCenter.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

游戏AI实现-寻路算法(Dijkstra)

戴克斯特拉算法&#xff08;英语&#xff1a;Dijkstras algorithm&#xff09;&#xff0c;又称迪杰斯特拉算法、Dijkstra算法&#xff0c;是由荷兰计算机科学家艾兹赫尔戴克斯特拉在1956年发现的算法。 算法过程&#xff1a; 1.首先设置开始节点的成本值为0&#xff0c;并将…

熟悉u8g2图形库C语言函数

前言&#xff1a; 前面我们已经成功移植了U8g2的图形库&#xff08;0.96寸OLED&#xff09;&#xff1a;手把手移植U8g2图形库&#xff0c;这个文章主要熟悉u8g2图形库的常用C语言函数&#xff01;需要移植的资料的可以关注一波评论区评论&#xff0c;我看到了就会给你发哦&am…

bestphp‘s revenge

bestphp’s revenge 知识点 php session反序列化 解题 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); //参数二的位置固定为 $_POST 数组&#xff0c;我们很容易便想到利用 extract 函数进行变量覆盖&#xff0c;以便配合后续利用…

远程连接的功能以及种类(sshd)

1.ssh简介 ssh通过创建安全隧道来实现ssh客户端与服务器之间的连接&#xff0c; 它的主要用途是连接远程服务器然后在上面执行指令。 远程连接服务器&#xff1a;分享主机的运算能力 种类&#xff1a;明文传输&#xff1a;Telent RSH等 目前非常少用 加密传输&#xff1a;S…

解决 Ubuntu 20.04 上编译 OpenCV 3.2 时的类型不匹配错误

解决 Ubuntu 20.04 上编译 OpenCV 3.2 时的类型不匹配错误 make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:329&#xff1a;modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:11856&a…

在M系列芯片的Mac上使用Uniapp开发的依赖安装指南

在M系列芯片的Mac上使用Uniapp开发的依赖安装指南 在基于M系列芯片&#xff08;例如M3、M4&#xff09;的Mac上进行Uniapp开发时&#xff0c;使用esbuild和rollup等依赖包时需要注意处理不同架构的支持。具体问题出现在darwin-arm64&#xff08;ARM架构&#xff09;和darwin-x…