QT教程-二十二,QSS界面/控件美化

news2024/10/23 12:31:18

目录

1. QSS 的基本语法

2. 选择器

3. 常用属性

4. 应用 QSS

5. 常见问题

6. 示例

7. 基本控件qss美化示例

1. 按钮(QPushButton)美化示例

2. 标签(QLabel)美化示例

3. 输入框(QLineEdit)美化示例

4. 滑动条(QSlider)美化示例

5. 进度条(QProgressBar)美化示例

6. 复选框(QCheckBox)美化示例

7. 下拉框(QComboBox)美化示例


        QSS(Qt Style Sheet)是 Qt 框架中用于定制界面样式的一种方式,类似于 CSS(层叠样式表)。通过 QSS,开发者可以轻松地改变 Qt 应用程序的外观,包括窗口、按钮、标签等各种控件的样式。以下是 QSS 的详细解释:

1. QSS 的基本语法

QSS 的基本语法与 CSS 类似,由选择器、属性和值组成。基本格式如下:

选择器 {
    属性1: 值1;
    属性2: 值2;
    ...
}

2. 选择器

选择器用于指定应用样式的控件。以下是一些常见的选择器类型:

  • 类选择器:选择特定类的控件。例如:

    QPushButton {
        color: red;
    }
    

    上面的代码会将所有 QPushButton 的颜色设置为红色。

  • id选择器:选择具有特定对象名的控件。QSS 不直接支持 CSS 中的 # 符号,而是使用 QObject::setObjectName() 来设置对象名,然后在 QSS 中用 # 来选择。例如:

    #myButton {
        background-color: blue;
    }
    

    上面的代码会将对象名为 myButton 的按钮的背景色设置为蓝色。

  • 子控件选择器:选择控件的子控件。例如:

    QComboBox::drop-down {
        image: url(dropdown.png);
    }
    

    上面的代码会将 QComboBox 的下拉按钮的图标设置为 dropdown.png

  • 伪状态选择器:选择处于特定状态的控件。例如:

    QPushButton:hover {
        background-color: yellow;
    }
    

    上面的代码会在鼠标悬停在按钮上时,将按钮的背景色设置为黄色。

3. 常用属性

以下是一些常用的 QSS 属性:

  • color:设置文本颜色。例如:

    QLabel {
        color: green;
    }
    
  • background-color:设置背景颜色。例如:

    QFrame {
        background-color: #f0f0f0;
    }
    
  • border:设置边框。例如:

    QLineEdit {
        border: 2px solid gray;
    }
    
  • font:设置字体。例如:

    QTextEdit {
        font: bold 12pt "Arial";
    }
    
  • padding:设置内边距。例如:

    QPushButton {
        padding: 5px;
    }
    
  • margin:设置外边距。例如:

    QGroupBox {
        margin: 10px;
    }
    

4. 应用 QSS

应用 QSS 到 Qt 应用程序中可以通过以下几种方式:

  • 通过代码应用
    在代码中使用 setStyleSheet() 方法直接设置样式表。例如:

    ui->myButton->setStyleSheet("color: red;");
    
  • 全局应用
    可以将 QSS 应用到整个应用程序的所有控件。例如:

    QApplication::setStyleSheet("QPushButton { color: blue; }");
    

5. 常见问题

  • 资源文件:QSS 支持使用资源文件(.qrc)中的图片或字体。可以通过 url() 函数来引用资源文件中的内容。
  • 兼容性:QSS 在不同的操作系统上可能会有不同的表现,特别是对于系统控件的样式。

6. 示例

以下是一个简单的 QSS 示例,将所有按钮的文本颜色设置为红色,背景色设置为蓝色:

QPushButton {
    color: red;
    background-color: blue;
}

7. 基本控件qss美化示例

以下是一些关于 QSS 的示例,展示如何对按钮、滑动条等控件进行美化。

1. 按钮(QPushButton)美化示例
QPushButton {
    background-color: #4CAF50; /* 背景色 */
    color: white;              /* 字体颜色 */
    border: none;              /* 去除边框 */
    padding: 10px 20px;       /* 内边距 */
    border-radius: 5px;       /* 圆角 */
    font-size: 16px;          /* 字体大小 */
}

QPushButton:hover {
    background-color: #45a049; /* 悬停时背景色 */
}

QPushButton:pressed {
    background-color: #388e3c; /* 被按下时背景色 */
}

2. 标签(QLabel)美化示例
QLabel {
    color: #333;                /* 字体颜色 */
    font-size: 14px;           /* 字体大小 */
    font-weight: bold;         /* 粗体 */
    padding: 5px;              /* 内边距 */
    border: 1px solid #ccc;    /* 边框 */
    border-radius: 3px;       /* 圆角 */
    background-color: #f9f9f9; /* 背景色 */
}

3. 输入框(QLineEdit)美化示例
QLineEdit {
    border: 2px solid #999;      /* 边框 */
    border-radius: 5px;         /* 圆角 */
    padding: 8px;                /* 内边距 */
    font-size: 14px;            /* 字体大小 */
    color: #333;                /* 字体颜色 */
    background-color: #f0f0f0;  /* 背景色 */
}

QLineEdit:focus {
    border: 2px solid #4CAF50;  /* 聚焦时边框颜色 */
}

4. 滑动条(QSlider)美化示例
QSlider {
    background: #ddd;            /* 背景色 */
}

QSlider::groove:horizontal {
    background: #bdbdbd;        /* 轨道背景 */
    height: 8px;                /* 轨道高度 */
    border-radius: 4px;        /* 圆角 */
}

QSlider::handle:horizontal {
    background: #4CAF50;        /* 滑块颜色 */
    border: 1px solid #388e3c;  /* 滑块边框 */
    width: 16px;                /* 滑块宽度 */
    margin: -4px 0;            /* 上下居中 */
    border-radius: 8px;        /* 圆角 */
}

QSlider::handle:horizontal:hover {
    background-color: #45a049; /* 悬停时滑块颜色 */
}
5. 进度条(QProgressBar)美化示例
QProgressBar {
    border: 2px solid #bbb;         /* 边框 */
    border-radius: 5px;            /* 圆角 */
    text-align: center;             /* 文本居中 */
    background-color: #f0f0f0;     /* 背景色 */
    margin: 5px;                   /* 外边距 */
}

QProgressBar::chunk {
    background-color: #4CAF50;     /* 已完成部分的背景色 */
    border-radius: 5px;            /* 圆角 */
}

6. 复选框(QCheckBox)美化示例
QCheckBox {
    spacing: 5px;                  /* 复选框与文本间距 */
}

QCheckBox::indicator {
    width: 20px;                   /* 指示器宽度 */
    height: 20px;                  /* 指示器高度 */
}

QCheckBox::indicator:unchecked {
    border: 1px solid #999;        /* 未选中状态的边框 */
    background-color: #f0f0f0;    /* 背景色 */
}

QCheckBox::indicator:checked {
    background-color: #4CAF50;     /* 选中状态的背景色 */
    border: 1px solid #388e3c;     /* 选中状态的边框 */
}
7. 下拉框(QComboBox)美化示例
QComboBox {
    border: 1px solid #999;       /* 边框 */
    border-radius: 5px;          /* 圆角 */
    padding: 5px;                 /* 内边距 */
    background-color: #f9f9f9;   /* 背景色 */
    font-size: 14px;              /* 字体大小 */
}

QComboBox::drop-down {
    border-left: 1px solid #999;  /* 下拉按钮的边框 */
}

QComboBox::indicator {
    width: 20px;                   /* 指示器宽度 */
    height: 20px;                  /* 指示器高度 */
}

QComboBox QAbstractItemView {
    background-color: #ffffff;    /* 下拉列表的背景色 */
    border: 1px solid #999;        /* 边框 */
    selection-background-color: #4CAF50; /* 选中项背景色 */
    selection-color: white;                /* 选中项字体颜色 */
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基于SSM微信小程序物流仓库管理系统设计与实现(源码+lw+数据库+讲解等)

选题背景 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

搞错了,再来!谷歌利用AI重新推出全新的Google Shopping

近年来,随着电子商务的迅猛发展,消费者对个性化和便捷购物体验的需求愈发高涨。谷歌,作为互联网巨头之一,一直在不断探索和创新,它一直在应对这样一个事实:越来越多的消费者首先访问零售商的网站&#xff0…

jmeter正则表达式教程

正则表达式用于提取相应数据中的代码、文本等数据,利用正则表达式,提取响应数据,移植到下一线程组的参数中,从而进行测试。 一、解释:解释很多,但是最关键 (1)注释不多说&#xff0c…

实验干货|电流型霍尔传感调理电路设计01

在做逆变器实验时,需要测量逆变器输出电压以及电流。作为初学者,因为缺乏经验也踩过不少坑,写一篇博客记录下来希望能帮到跟我一样的初学者。 踩坑回顾 用什么采样?片内ADC还是片外ADC? 早前,在用RTLAB做…

51单片机快速入门之 LCD1602 液晶显示屏2024/10/19

51单片机快速入门之 LCD1602 液晶显示屏 Proteus 电路图 : 74HC595 拓展电路可以不用,给 p0-p17 添加上拉电阻也可以!,我这里是方便读取和节省电阻线路 (因为之前不知道 在没有明确循环的情况下,Keil编译器可能会在main()中自动添加类似以下的汇编代码&#xff1a…

手机淘宝自动下单退货自动化RPA脚本机器人

使用手机集线器连接多个手机并发运行。 脚本分3个部分(读取本地连接下单,退货获取退货地址信息,填写快递单号) 脚本部分图结构看下面的图片 部分数据统计展示

ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常

例子: DECLARE ORDER_NUM VARCHAR2(20); BEGIN SELECT S.ORDER_NUM INTO ORDER_NUM FROM SALES_ORDER S WHERE S.ID122344; DBMS_OUTPUT.PUT_LINE(单号: || ORDER_NUM); END; 在查询结果为空的情况下,以上代码会报错:未找到任何数据 解决方…

1024程序员节探讨<程序员的人生观和价值观>

程序员的人生观和价值观 程序员的人生观和价值观往往受到其职业特性和工作环境的影响,但也会因个体差异而有所不同。 人生观 持续学习与成长: 程序员通常认识到技术的快速发展,因此他们倾向于保持一种持续学习和自我提升的态度。他们可能将…

全网最详细图文测评!Stability.AI 发布 SD3.5 Large 模型,能否逆风翻盘超越FLUX?

原文链接:全网最详细图文测评!Stability.AI 发布 SD3.5 Large 模型,能否逆风翻盘超越FLUX? (chinaz.com) SD3.5 的前世今生 6 月的时候,Stability AI发布了 Stable Diffusion 3 Medium,但是在在 FLUX 发布…

FPGA学习(7)-线性序列机原理与应用,不同类型的LED控制开关

目录 1.实现1 2.实现2 2.1方法1 2.2方法2 3.实现3 3.1实验现象 4.实现4 4.1分析 4.2实现过程 4.2.1 counter的计数 4.2.2 en_counter2的判断 4.2.3 en_counter0的判断 4.2.4 对case语句加判断条件 4.3仿真结果 ​编辑 4.4实验现象 1.实现1 1.实现以下图示功能…

qt QBuffer详解

QBuffer 是 Qt 提供的一个类,用于在内存中操作二进制数据。它是 QIODevice 的一个子类,允许你将数据读入和写出到一个内存缓冲区,而不需要与文件系统交互。 常用方法 构造函数: QBuffer(QObject *parent nullptr): 创建一个空的 QBuffer 对象…

vue项目启动报错:exit status 1

vue项目启动报错:(vite构建) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! Exit status 1 如下图所示: 解决 检查node版本,Vite 需要 Node.js 版本 18 或 20 我之前是 14.16.1,更换成 20.0.0 就可…

Flink 06 聚合操作入门学习,真不难

抛砖引玉 让你统计1小时内每种商品的销售额,用Flink 该怎么实现。 还是让你统计1小时内每种商品的销售额,但是要过滤掉退款的订单,用Flink 该怎么实现。 学了本文两个操作,不信你还不会。 AggregateFunction ❝ 通常用于对数据…

【决策树】- 二分法处理连续值

二分法处理连续值 在决策树算法中,处理连续特征通常采用二分法,将其转化为离散特征。此方法通过寻找最佳分割点,将连续特征划分为两个区间。 1. 原理 二分法的核心思想是将连续值特征转换为离散值,以便于决策树的构建。通过选择…

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR(无类别域间路由) 目的IP & 当前路由器的子网掩码 …

R语言机器学习算法实战系列(九)决策树分类算法 (Decision Trees Classifier)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型模型的决策树预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模…

TCP协议四次挥手

1.第一次挥手:客户端发送FIN报文,请求断开连接。这一过程为主动关闭。客户端由ESTABLISHED转换为FIN-WAIT-1。 FIN和ACK置为1,表示这是一个请求结束报文。seqU表示在之前客户端已经发送的字节数。ackV则表示服务端向客户端发送确认消息累计的…

磁盘分区工具 DiskGenius Pro v5.5.0.1488 中文汉化版

DiskGenius 是一款专家级数据恢复软件,集数据恢复、硬盘分区、系统备份还原等多种功能于一身的超级工具软件,功能全面,安全可靠。可以提供磁盘的数据找回、备份、分区、修复、删除、格式化等操作,也能帮助用户修复磁盘坏道、彻底删…

从零构建大模型训练流程及原理(一)

这是一个大模型训练的系列文章,将从零开始手把手带大家构建大模型训练全流程。话不多说,开始发车~什么是大语言模型 1. LLMs是什么? 大型语言模型(LLMs)是基于Transformer架构的深度学习模型,旨在理解、生…

[枚举坤坤]二进制枚举基础

我们都知道数据是以二进制形式存储在计算机中的。当我们使用十进制数进行编程时(如a10)实际上计算机要先进行一步转码,将其化为二进制的形式进行计算。如果在编程的过程中我们可以直接越过转码这一步去操纵二进制形式进行运算,程序…