【QT】QSS

在这里插入图片描述

个人主页~


一、QSS

QSS可以说是拿了CSS的一部分过来用,是CSS的简化版本

1、基本语法

选择器
{属性名:属性值;
}

将界面上所有的QPushButton文本颜色都改为红色

QPushButton
{color:red;
}

2、设置方式

(1)指定控件样式设置

在widget.cpp中使用setStyleSheet方法设置样式
这属于是给Widget设置样式,这对于子控件QPushButton等也会生效

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

在这里插入图片描述

(2)全局控件样式设置

在main函数通过a的setStyleSheet设置全局控件样式

a.setStyleSheet("QPushButton { color: red;} ");

在这里插入图片描述
这两种方法设置起来的样式使用时会相互叠加,起到共同作用的效果

(3)从文件加载样式表

首先在ui中创建一个pushbutton,然后创建一个resource.qrc文件,新建一个qss文件将文件Add Files到qrc文件当中,然后修改qss文件的内容为

QPushButton
{color:red;
}

在这里插入图片描述
然后修改main函数

QString loadQSS() {QFile file(":/style.qss");// 打开文件file.open(QFile::ReadOnly);//读取文件内容QString style = file.readAll();// 关闭文件file.close();return style;}
int main(int argc, char *argv[])
{QApplication a(argc, argv);// 调用上述函数加载样式const QString& style = loadQSS();a.setStyleSheet(style);Widget w;w.show();return a.exec();
}

在这里插入图片描述

(4)使用Qt Designer编辑样式

右键空间->改变样式表,按照上面的基本语法输入就可以了
在这里插入图片描述

3、选择器

选择器说明
全局选择器选择所有的widget
类型选择器选择所有该类型的以及其子类控件
类选择器选择所有该类型的控件,不选择子类
ID选择器选择名字为xx的控件
后代选择器选择某一控件所有后代中的某个控件
子选择器选择某一个控件所有子控件中的某个控件
并集选择器选择多种控件
属性选择器选择某个控件中某一共同属性的控件

下面就是一个类选择器的例子,在前面加一个.
只选择该控件,不选择后代控件
在这里插入图片描述

(1)子控件选择器

添加一个qrc文件,用来放下拉按钮图标,使用子控件QComboBox::down-arrow选中了QComboBox的下拉按钮,通过image属性设置图片,然后将style设置到窗口中
在这里插入图片描述

(2)伪类选择器

伪类选择器说明
:hover鼠标放到控件上
:pressed鼠标左键被按下时
:focus获取输入焦点时
:enabled元素处于可用状态时
:checked被勾选时
:read-only元素为只读状态时

取反伪类选择器不再单独出一个名字,而是在:后面加!表示取反

伪类选择器

4、样式属性

(1)盒模型

属性说明
margin设置四个方向的外边距,复合属性
padding设置四个方向的内边距,复合属性
border-style设置边框样式
border-width边框的粗细
border-color边框的颜色
border复合属性,相当于第三条+第四条+第五条

Content:存放控件内容,比如包含的文本和图标等等
Padding:内边距,边框和内容之间的距离
Border:控件的边框
Margin:外边距,边框到控件geometry返回的矩形边界的距离

默认内外边距以及边框宽度都为0

在这里插入图片描述

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* btn = new QPushButton(this);btn->setGeometry(0, 0, 100, 100);btn->setText("hello");//设置border以及marginbtn->setStyleSheet("QPushButton { border: 5px solid black; margin: 20px; }");//获取按钮位置并打印const QRect& rect = btn->geometry();qDebug() << rect;
}

在这里插入图片描述
在这里插入图片描述
从截图中可以看到按钮的位置还是原来的位置,但是当前按钮的边框被外边框挤压的缩小了

5、控件样式

(1)按钮

在这里插入图片描述
在这里插入图片描述

border-radius指设置圆角矩形,值越大角越圆

csspushbutton

(2)复选框

先创建一个qrc文件,将我们需要的图片加载进去
在这里插入图片描述
然后编辑它的样式表
在这里插入图片描述

QCheckBox {font-size: 20px;
}
//子控件选择器,选中checkbox对钩部分
QCheckBox::indicator {width: 20px;height: 20px;
}QCheckBox::indicator:unchecked {image: url(:/unchecked.png);
}QCheckBox::indicator:unchecked:hover {image: url(:/unchecked_hover.png);
}QCheckBox::indicator:unchecked:pressed {image: url(:/unchecked_pressed.png);
}QCheckBox::indicator:checked {image: url(:/checked.png);
}QCheckBox::indicator:checked:hover {image: url(:/checked_hover.png);
}QCheckBox::indicator:checked:pressed {image: url(:/checked_pressed.png);
}

qsscheckbox

(3)单选框

也是先创建一个qrc文件,类似于上面
在这里插入图片描述

QWidget QRadioButton {font-size: 20px;
}
QWidget QRadioButton::indicator {width: 20px;height: 20px;
}
QWidget QRadioButton::indicator:unchecked {image: url(:/unchecked.png);
}
QWidget QRadioButton::indicator:unchecked:hover {image: url(:/unchecked_hover.png);
}
QWidget QRadioButton::indicator:unchecked:pressed {image: url(:/unchecked_pressed.png);
}
QWidget QRadioButton::indicator:checked {image: url(:/checked.png);
}
QWidget QRadioButton::indicator:checked:hover {image: url(:/checked_hover.png);
}
QWidget QRadioButton::indicator:checked:pressed {image: url(:/checked_pressed.png);
}

cssradiobutton

(4)输入框

在这里插入图片描述

在这里插入图片描述

QLineEdit {border-width: 1px;//边框宽度 border-radius: 10px;//边框圆角border-color: rgb(58, 58, 58);//边框颜色border-style: inset;//边框风格padding: 0 8px;//内边距color: rgb(255, 255, 255);//文字颜色background:rgb(100, 100, 100);//背景颜色selection-background-color: rgb(187, 187, 187);//选中文字的背景颜色selection-color: rgb(60, 63, 65);//选中文字的文本颜色
}

(5)整合起来用一个登陆界面展示

先创建一个qrc文件载入一张图片作为登陆窗口的背景图
在这里插入图片描述
在ui建立一个与widget同大小的frame,将以下部件在frame上创建出来,然后调整frame样式表

在这里插入图片描述
都是上面提到的内容

QFrame {//设置图片作为背景border-image: url(:/slm.jpg);
}
QLineEdit {color: #8d98a1;background-color: #405361;padding: 0 5px;font-size: 20px;border-style: none;border-radius: 10px;
}
QCheckBox {color: white;background-color: transparent;
}
QPushButton {font-size: 20px;color: white;background-color: #555;border-style: outset;border-radius: 10px;
}
QPushButton:pressed {color: black;background-color: #ced1db;border-style: inset;
}

今日分享就到这里~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470655.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动

在这篇文章中&#xff0c;我们将学习如何使用Java编程语言模拟键盘输入&#xff0c;特别是模拟上下左右方向键的操作。这是一个很有趣的项目&#xff0c;尤其适合刚入行的开发者。我们将分步进行&#xff0c;接下来&#xff0c;我们会通过表格展示整个实现过程&#xff0c;然后…

JQuery封装的ajax

1. 注意&#xff1a; 首先要导jq的包json对象可以用 . 来调用keyjava只能给前端传页面&#xff0c;或者打印的内容String jsonstr json.toJSONString(resultJSON); //将对象转为JSON对象 Json格式和参数解释&#xff1a; <script src"js/jquery-1.10.2.min.js&quo…

文献解读-DNAscope: High accuracy small variant calling using machine learning

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;DNAscope: High accuracy small variant calling using machine learning标题&#xff08;中文&#xff09;&#xff1a;DNAsc…

vue中如何关闭eslint检测?

ESLint作为一个用于JavaScript代码的验证工具&#xff0c;主要用于检查代码语法和编码规范。本文旨在指导那些希望在Vue.js项目中禁用ESLint验证功能的用户。对于需要这一操作的朋友&#xff0c;以下内容将提供参考。 vue中如何关闭eslint检测&#xff1f; 有了eslint的校验&…

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能

&#xff08;一&#xff09;安装插件SystemVerilog - Language Support 安装一个vscode插件即可&#xff0c;插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&#xff0c;但它只能提…

️️一篇快速上手 AJAX 异步前后端交互

AJAX 1. AJAX1.1 AJAX 简介1.2 AJAX 优缺点1.3 AJAX 前后端准备1.4 AJAX 请求基本操作1.5 AJAX 发送 POST 请求1.6 设置请求头1.7 响应 JSON 数据1.8 AJAX 请求超时与网络异常处理1.9 取消请求1.10 Fetch 发送 Ajax 请求 2. jQuery-Ajax2.1 jQuery 发送 Ajax 请求&#xff08;G…

❤React-React 组件通讯

❤ React 组件通讯 组件通讯将教我们的内容&#xff1a; 能够使用道具接收数据W能够实现父子组件之间的通讯能够实现兄弟组件之间的通讯能够给组件添加道具校验能够说出生命周期常用的钩子函数能够知道高阶组件的作用 1、 组件通讯介绍 组件是独立且封闭的单元&#xff0c;…

【初阶数据结构与算法】链表刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构

文章目录 一、移除链表元素思路一思路二 二、合并两个有序链表思路&#xff1a;优化&#xff1a; 三、反转链表思路一思路二 四、链表的中间节点思路一思路二 五、综合应用之链表的回文结构思路一&#xff1a;思路二&#xff1a; 一、移除链表元素 题目链接&#xff1a;https:…

POI实现根据PPTX模板渲染PPT

目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…

计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)

概率分布&#xff1a;理解数据的分布特征&#xff08;如正态分布、伯努利分布、均匀分布等&#xff09;。期望和方差&#xff1a;描述随机变量的中心位置和离散程度。贝叶斯定理&#xff1a;用于推断和分类中的后验概率计算。假设检验&#xff1a;评估模型的性能和数据显著性。…

Scala入门基础(17.1)Set集习题

一.选择题 二.实训 图书馆书籍管理系统相关的练习。内容要求&#xff1a; 1.创建一个可变 Set&#xff0c;用于存储图书馆中的书籍信息 &#xff08;假设书籍信息用字符串表示&#xff0c;如“Java编程思想”“Scala实战”等&#xff09; 2.添加两本新的书籍到图书馆集合中&a…

移动端【01】面试系统的MVVM重构实践

基于MVVM的移动端面试系统重构实践&#xff1a;模块化设计与实现 一、项目背景 面试记录表系统在经过一年多的迭代后&#xff0c;代码质量问题日益突出。View和ViewModel代码均超过3000行&#xff0c;组件引用超过1000个&#xff0c;亟需进行架构重构。本文将详细介绍基于MVV…

Springboot 启动端口占用如何解决

Springboot 启动端口占用如何解决 1、报错信息如下 *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 9010 was already in use.Action:Identify and stop the process thats listening o…

基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统

项目名称&#xff1a;基于PythonDjangoVue3MySQL实现的前后端分离商场车辆管理系统 技术栈 开发工具&#xff1a;PyCharm、Visual Studio Code (VSCode)运行环境&#xff1a;Python 3.10、MySQL 8.0、Node.js 18技术框架&#xff1a;Django 5、Vue 3.4、Ant-Design-Vue 4.12 …

ML 系列: 第 23 节 — 离散概率分布 (多项式分布)

目录 一、说明 二、多项式分布公式 2.1 多项式分布的解释 2.2 示例 2.3 特殊情况&#xff1a;二项分布 2.4 期望值 &#xff08;Mean&#xff09; 2.5 方差 三、总结 3.1 python示例 一、说明 伯努利分布对这样一种情况进行建模&#xff1a;随机变量可以采用两个可能的值&#…

Openstack7--安装消息队列服务RabbitMQ

只需要在控制节点安装 安装RabbitMQ yum -y install rabbitmq-server 启动RabbitMQ并设置开机自启 systemctl start rabbitmq-server;systemctl enable rabbitmq-server 创建 rabbitmq 用户 并设置密码为 000000 rabbitmqctl add_user rabbitmq 000000 如果你不慎创错了…

图像处理实验二(Image Understanding and Basic Processing)

图像理解&#xff08;Image Understanding&#xff09;和基本图像处理&#xff08;Basic Image Processing&#xff09;是计算机视觉领域的重要组成部分。它们涉及从图像中提取有用信息、分析图像内容、并对其进行处理以达到特定目的。图像理解通常包括识别、分类和解释图像中的…

第74期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Kafka - 启用安全通信和认证机制_SSL + SASL

文章目录 官方资料概述制作kakfa证书1.1 openssl 生成CA1.2 生成server端秘钥对以及证书仓库1.3 CA 签名证书1.4 服务端秘钥库导入签名证书以及CA根证书1.5 生成服务端信任库并导入CA根数据1.6 生成客户端信任库并导入CA根证书 2 配置zookeeper SASL认证2.1 编写zk_server_jass…