【qt】qss使用

1.按钮设置颜色

在这里插入图片描述

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

也可以通过rgb来设置
在这里插入图片描述
ff表示红色拉满,gb为0当然是红色
这只是针对pushbutton对象的控件设置的,如果我想设置所有的按钮空间都是一个颜色
在这里插入图片描述
这是通过设置界面中子控件然后经过选择器选择QPushButton这个控件来设置的

2.全局样式

在这里插入图片描述
直接在main.cpp中设置所有的QPushButton的颜色
在这里插入图片描述

提出两个问题
1.如果设置了全局样式,然后再某个控件里面设置了其他样式,会怎么样?
比方说我们可以针对一个按钮设置的字体的像素(全局样式设置了颜色)
在这里插入图片描述
会形成叠加。
2.如果全局样式,然后在某个控件里面设置了同样样式,比方颜色
在这里插入图片描述
发现如果全局样式和某个控件样式冲突,会选择直接局部的控件样式选择

3.选择器的用法

1.类型选择器,上面讲过的就是类型选择器,演示一下
在这里插入图片描述
对于类型控件的子控件也生效
2.类选择器,他不会选择子类,如果是QWidget,在窗口中的子类控件不会设置
在这里插入图片描述
按钮属于子控件
3.id选择器,在开发中,期望不同的控件样式不同,此时就需要使用id选择器了
在这里插入图片描述
类型选择#+控件id+设置信息,如果类型选择器和id选择器设置类型冲突,则选择就近的及id选择器设置内容
4.并集选择器
将不同的控件设置系统属性,比方说把按钮,标签,文本框颜色设置一样
在这里插入图片描述

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
   // a.setStyleSheet("QPushButton {color :red;}");//类型选择器
  //  a.setStyleSheet(".QWidget {color :red;}"); //类选择器,子类不会设置

    //  QString str="QPushButton {color :red;}";

     // str+="#pushButton_2 {color :black;}";//id选择器
     QString str="QPushButton,QLineEdit,QLabel {color :pink;}";//并集选择器
    a.setStyleSheet(str);

    Widget w;
    w.show();
    return a.exec();
}

5.子控件选择器
使用下拉框QComboBox的子控件选择器给下拉按钮设置图片
首先创建一个下拉框
在这里插入图片描述
导入替换子控件的图片
在这里插入图片描述
在这里插入图片描述
对比效果:
在这里插入图片描述
6.伪类选择器
前面介绍的选择器,都是选中"控件"伪类选择器,选中的是控件的"状态""符合一定状态条件"的控件
使用伪类选择器对一个控件的不同状态进行设置,比方一个按钮鼠标没点击是红色,鼠标移动到该按钮内部变为粉色,按下变蓝色

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

在这里插入图片描述

4. 盒子模型

请添加图片描述
1.设置内边框:表示文字和边框的距离,用标签举例子
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
2.设置外边框
在这里插入图片描述

5.登录界面设计

1.使用控件

在这里插入图片描述

2.垂直布局

在这里插入图片描述

3.调整大小

在这里插入图片描述
将minimumsize和maxmumsize的高度都设置为50,在高度方向将按钮,两个lineedit拉伸一下

4.导入背景图片

在这里插入图片描述
在这里插入图片描述
导入成功

5.添加QFrame

因为qt直接给QWidget顶层窗口设置背景图会失效,所以我们套一个控件QFrame,也是QWidget的一个子类
在这里插入图片描述
在这里插入图片描述
将登录界面放在QFrame里面
在这里插入图片描述
调节QFrame控件大小和界面一样大

6.添加样式表

在这里插入图片描述
这里注意设置背景图时不要使用background-image,这样设置图片不会跟随控件大小变化,我们可以设置为border-image
在这里插入图片描述
设置行编辑样式表
在这里插入图片描述
在这里插入图片描述
设置复选框样式
在这里插入图片描述

在这里插入图片描述
设置按键样式表
在这里插入图片描述
在这里插入图片描述
添加按钮状态样式,(按下)
在这里插入图片描述

7.添加行编辑提示

在这里插入图片描述
在这里插入图片描述
同理
在这里插入图片描述
调节输入的密码私密
在这里插入图片描述

8.演示

登录界面设计

### Qt QSS 使用指南与示例 #### QSS 的基本概念 QSSQt Style Sheets)是用于美化 Qt 应用程序界面的工具,它允许开发者通过类似于 CSS 的方式定义控件的样式[^1]。QSS 支持对控件的颜色、字体、位置、边框等属性进行设置,并且在样式冲突时,QSS 的优先级高于通过 C++ 代码设置的样式。 #### QSS 的语法介绍 QSS 的语法与 CSS 类似,但只支持部分 CSS 属性,因此更加简单。一个典型的 QSS 样式规则由选择器和声明块组成,例如: ```css QPushButton { background-color: blue; color: white; font-size: 14px; } ``` 上述代码将所有 `QPushButton` 控件的背景颜色设置为蓝色,文字颜色设置为白色,字体大小设置为 14 像素[^1]。 #### QSS 的应用方式 在 Qt 中,可以通过两种方式使用 QSS: 1. **通过代码设置** 可以直接在代码中调用 `setStyleSheet` 方法来设置样式表。例如: ```python widget.setStyleSheet("QPushButton { background-color: red; }") ``` 这段代码将 `widget` 中的所有 `QPushButton` 控件的背景颜色设置为红色[^2]。 2. **通过外部文件导入** 将样式表保存为 `.qss` 文件,然后在代码中加载该文件。例如: ```python with open("styles.qss", "r") as f: app.setStyleSheet(f.read()) ``` 这种方式更适合大型项目,便于维护和复用样式。 #### 示例:使用 QSS 美化界面 以下是一个完整的示例,展示如何通过 QSS 美化一个简单的 Qt 界面: ```python from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QVBoxLayout # 创建应用程序对象 app = QApplication([]) # 创建主窗口 window = QWidget() window.setWindowTitle("QSS 示例") # 创建布局 layout = QVBoxLayout() # 添加按钮 button1 = QPushButton("按钮 1") button2 = QPushButton("按钮 2") # 将按钮添加到布局中 layout.addWidget(button1) layout.addWidget(button2) # 设置布局 window.setLayout(layout) # 设置 QSS 样式 window.setStyleSheet(""" QWidget { background-color: #f0f0f0; } QPushButton { background-color: #4CAF50; color: white; font-size: 16px; border: none; padding: 10px 20px; text-align: center; } QPushButton:hover { background-color: #45a049; } """) # 显示窗口 window.show() # 运行应用程序 app.exec_() ``` 上述代码创建了一个包含两个按钮的窗口,并通过 QSS 设置了窗口和按钮的样式。按钮背景颜色为绿色,鼠标悬停时颜色会变深[^2]。 #### 注意事项 - 如果通过 QSS 和 C++ 代码同时设置了某个控件的样式,则 QSS 的优先级更高。 - QSS 不支持所有的 CSS 属性,具体支持的属性可以参考官方文档[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#小多子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值