Qt Style Sheets-入门

Qt 样式表是一种强大的机制,允许您自定义小部件的外观,这是在通过子类化QStyle已经可行的基础上的补充。Qt 样式表的概念、术语和语法在很大程度上受到 HTML级联样式表 (CSS)的启发,但适用于小部件的世界。

概述

        样式表是文本规范,可以使用QApplication::setStyleSheet() 在整个应用程序上设置,或者使用QWidget::setStyleSheet() 在特定的小部件(及其子部件)上设置。如果在不同级别设置了多个样式表,Qt 会从所有已设置的样式表中派生有效的样式表。这称为层叠。

        例如,以下样式表指定所有QLineEdit应使用黄色作为其背景颜色,并且所有QCheckBox应使用红色作为文本颜色:

QLineEdit { background: yellow }
QCheckBox { color: red }

        对于这种定制,样式表比QPalette强大得多。例如,可能会很想将QPalette::Button角色设置为红色以获得红色的QPushButton。然而,这并不能保证在所有样式中都有效,因为样式作者受到不同平台的指南以及(在 Windows XP 和 macOS 上)本地主题引擎的限制。

         样式表允许您进行各种仅使用QPalette难以或无法进行的自定义。如果您希望必填字段具有黄色背景、潜在破坏性的按钮具有红色文本,或者想要精美的复选框,样式表就是答案。

        样式表应用于当前小部件样式之上,这意味着您的应用程序将尽可能看起来具有原生风格,但任何样式表约束都将被考虑在内。与调色板调整不同,样式表提供保证:如果您将QPushButton的背景颜色设置为红色,您可以确信该按钮在所有样式、所有平台上都将具有红色背景。此外,Qt 设计器提供样式表集成,使得在不同小部件样式中查看样式表的效果变得容易。

        此外,样式表可用于为您的应用程序提供独特的外观和感觉,而无需对QStyle进行子类化。例如,您可以为单选按钮和复选框指定任意图像以使它们脱颖而出。使用此技术,您还可以实现通常需要对多个样式类进行子类化的较小自定义,例如指定样式提示。下面描绘的样式表示例定义了两个独特的样式表,您可以随意尝试和修改。 

在 Windows XP 上运行的 Coffee 主题

 在 Windows XP 上运行的 Pagefold 主题

在 Ubuntu Linux 上运行的 Coffee 主题

在 macOS 上运行的 Pagefold 主题

当样式表处于活动状态时,由QWidget::style()返回的QStyle是一个包装的“样式表”样式,而不是特定于平台的样式。该包装样式确保任何活动的样式表都得到遵循,否则将绘图操作转发到基础的、特定于平台的样式(例如,在 Windows XP 上的 QWindowsXPStyle)。

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

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

相关文章

【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow

一、项目介绍 眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练(‘白内障’, ‘糖尿病性视网膜病变’, ‘青光眼’, ‘正常’&…

C++动态内存的管理

今天来分享C动态内存管理相关知识,闲言勿谈,直接上干货。 1. 动态内存的开辟和销毁(new和delete) (1)前置知识:我们知道c语言有malloc和calloc和realloc三个函数可以进行动态的开辟内存,那么它们有什么区别呢?首先是…

IntelliJ IDEA 2024.1 最新变化 附问卷调查 AI

IntelliJ IDEA 2024.1 最新变化 问卷调查项目在线AI IntelliJ IDEA 2024.1 最新变化关键亮点全行代码补全 Ultimate对 Java 22 功能的支持新终端 Beta编辑器中的粘性行 AI AssistantAI Assistant 改进 UltimateAI Assistant 中针对 Java 和 Kotlin 的改进代码高亮显示 Ultimate…

【STM32嵌入式系统设计与开发---拓展】——1_9_1上拉输入和下拉输入

在使用GPIO引脚时,上拉输入和下拉输入的选择取决于外部电路的特性和应用需求。以下是它们各自的应用场景: 1、上拉输入(Pull-up Input) 用途: 当默认状态需要为高电平时。 避免引脚悬空(floating)导致的…

安卓onNewIntent 什么时候执行

一.详细介绍 onNewIntent 方法 onNewIntent 是 Android 中 Activity 生命周期的一部分。它在特定情况下被调用,主要用于处理新的 Intent,而不是创建新的 Activity 实例。详细介绍如下: 使用场景 singleTop 启动模式: 如果一个 Ac…

《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸

当攻击者获得一个容器环境的shell权限时,攻击者往往会尝试进行容器逃逸,利用容器环境中的错误配置或是漏洞问题,从容器成功逃逸到宿主机,从而获取到更高的访问权限。 在本节课程中,我们将详细介绍一些常见的容器逃逸方…

构建实时银行应用程序:英国金融机构 Nationwide 为何选择 MongoDB Atlas

Nationwide Building Society 超过135年的互助合作 Nationwide Building Society(以下简称“Nationwide”) 是一家英国金融服务提供商,拥有超过 1500 万名会员,是全球最大的建房互助会。 Nationwide 的故事可以追溯到 1884 年&am…

论文翻译:Large Language Models for Education: A Survey

目录 大型语言模型在教育领域的应用:一项综述摘要1 引言2. 教育中的LLM特征2.1. LLMs的特征2.2 教育的特征2.2.1 教育发展过程 低进入门槛。2.2.2. 对教师的影响2.2.3 教育挑战 2.3 LLMEdu的特征2.3.1 "LLMs 教育"的具体体现2.3.2 "LLMs 教育"…

BUUCTF逆向wp [HDCTF2019]Maze

第一步 查壳,本题是32位,有壳,进行脱壳。 第二步 这里的 jnz 指令会实现一个跳转,并且下面的0EC85D78Bh被标红了,应该是一个不存在的地址,这些东西就会导致IDA无法正常反汇编出原始代码,也称…

【Linux】将IDEA项目部署到云服务器上,让其成为后台进程(保姆级教学,满满的干货~~)

目录 部署项目到云服务器什么是部署一、 创建MySQL数据库二、 修改idea配置项三、 数据打包四、 部署云服务器五、开放端口号六 、 验证程序 部署项目到云服务器 什么是部署 ⼯作中涉及到的"环境" 开发环境:开发⼈员写代码⽤的机器.测试环境:测试⼈员测试程序使⽤…

离线语音识别芯片在智能生活中的应用

离线语音识别芯片,这一技术正逐渐渗透到我们日常生活的每一个角落,为众多产品带来前所未有的智能体验。它能够应用到多种产品中,‌包括但不限于:‌ 1、智能音箱:‌语音识别芯片作为智能音箱的核心,‌使用户…

自动驾驶车道线检测系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目录 1. 摘要概述2. 背景介绍3. 方法3.1 俯视图投影3.2 网络结构3.2.1 投影变换层3.2.2 投影变换层3.2.3 道路投影预测分支 3.3 车道预测头3.4 训练和真实值关联 4. 实验4.1 合成 3D 车道数据集4.2 真实世界 3D 车道数据集4.3 评估结果4.4 评估图像仅车道检测 5. 总结和讨论…

Centos7 安装私有 Gitlab

在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它。 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemct…

算法 —— 快速幂

目录 P1045 [NOIP2003 普及组] 麦森数 P1226 【模板】快速幂 原理I 原理II P1226 代码解析 P1045 代码解析 P1045 [NOIP2003 普及组] 麦森数 本题来自洛谷:P1045 [NOIP2003 普及组] 麦森数,根据题意,我们可以看到本题需要计算最少2的1…

Docker的数据管理和网络通信

目录 一、Docker 的数据管理 1.数据卷 2.数据卷容器 二、端口映射 三、容器互联(使用centos镜像) 四、*Docker 镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile 创…

SwiftUI中App启动入口分析,以及视图和App生命周期介绍

App入口分析 新创建的swiftui项目中我们应该先要了解一下app的入口函数在哪里,并了解大概的含义。 @main:标记应用程序的入口。 App 协议:SwiftUI 应用程序的入口点。 Scene:表示应用程序的一个视图层级,通常是 WindowGroup,表示主窗口的内容。 Scene讲解 Scene 表示…

线性表的链式存储结构————双链表(java)

线性表的链式存储结构————双链表(java) 文章目录 线性表的链式存储结构————双链表(java)双链表双链表的创建插入数据元素头插法尾插法 求链表的长度输出双链表删除双链表中的指定元素总代码运行效果用Java内部类实现双链表…

[HCTF 2018]WarmUp1

进入靶场,检查代码看到有source.php,访问 /source.php 读代码,在参数中传入 file,通过checkFile后,会加载file界面。 再看checkFile, 第一个判断,是非空并且是个字符串,否则返回false 第二个判…

小程序里面使用vant ui中的vant-field组件,如何使得输入框自动获取焦点

//.wxml <van-fieldmodel:value"{{ userName }}"placeholder"请输入学号"focus"{{focusUserName}}"/>// .js this.setData({focusUserName: true});vant-field

华为OD算法题汇总

60、计算网络信号 题目 网络信号经过传递会逐层衰减&#xff0c;且遇到阻隔物无法直接穿透&#xff0c;在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n]&#xff0c;二维数组代表网格地图 array[i][j]0&#xff0c;代表i行j列是空旷位置 a…