Qt Style Sheets Examples整理

news2025/1/22 12:50:23

文章目录

    • 样式表用法
      • 使用动态属性自定义
      • 使用Box模型自定义QPushButton
      • 自定义QPushButton的菜单指示子控件
      • 复杂选择器
      • 完整代码:
    • 特定部件样式表
      • QAbstractScrollArea
      • QCheckBox
      • QComboBox
      • QDockWidget

原文地址:https://doc.qt.io/qt-6/stylesheet-examples.html

我使用的qt5.14.2测试的

样式表用法

1.全局使用

qApp->setStyleSheet(“QLineEdit { background-color: yellow }”);

2.子类及子类以下使用

myDialog->setStyleSheet(“QLineEdit { background-color: yellow }”);

3.某一个特定的控件

使用QObject::setObjectName()设定一个ID

通过id选择器

myDialog->setStyleSheet(“QLineEdit#nameEdit { background-color: yellow }”);

4.直接在控件上使用

nameEdit->setStyleSheet(“background-color: yellow”);

使用动态属性自定义

为一个控件设置一个属性值,然后根据属性值更改样式表

QLineEdit *nameEdit = new QLineEdit(this);
nameEdit->setProperty(“mandatoryField”, true);

*[mandatoryField=“true”] { background-color: yellow }

效果图:
在这里插入图片描述

使用Box模型自定义QPushButton

效果图:
在这里插入图片描述
按钮按下效果:
在这里插入图片描述

自定义QPushButton的菜单指示子控件

默认情况下,菜单指示器位于填充矩形的右下角。我们可以通过指定subcontrol-position和subcontrol-origin来改变这一点,以不同的方式锚定指示器。我们也可以使用top和left来移动指示器几个像素。

效果:
在这里插入图片描述

复杂选择器

后面设置的QLineEdit没有起作用

效果图:
在这里插入图片描述

完整代码:

allwidgetshow.cpp

#include "allwidgetshow.h"

#include <QVBoxLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QMenu>
#include <QAction>
#include <QUrl>

AllWidgetShow::AllWidgetShow(QWidget *parent) : QWidget(parent)
{
    QVBoxLayout* mainLayOut = new QVBoxLayout();

    QLineEdit* nameEdit = new QLineEdit();
    nameEdit->setProperty("mandatoryField", true);

    QLineEdit* emailEdit = new QLineEdit();
    mainLayOut->addWidget(nameEdit);
    mainLayOut->addWidget(emailEdit);

    QPushButton* pushBtn1 = new QPushButton("Format C:");
    pushBtn1->setObjectName("evilButton");


    QPushButton* pushBtn2 = new QPushButton("Menu Btn");

    QMenu* pMenu = new QMenu();
    pushBtn2->setMenu(pMenu);
    QAction* pAction = new QAction();
    pAction->setText(tr("save"));
    pMenu->addAction(pAction);

    mainLayOut->addWidget(pushBtn1);
    mainLayOut->addWidget(pushBtn2);

    QString pushBtn1Style = "QPushButton#evilButton { background-color: red;"
                            "border-style: outset;border-width: 2px;"
                            "border-color: blue;border-radius: 10px; "
                            "font: bold 14px;min-width: 10em;padding: 6px;}"
                            "QPushButton#evilButton:pressed {"
                            "background-color: rgb(0, 244, 0);"
                            "border-style: inset;}";

    QString pushBtn2Style = "QPushButton::menu-indicator{"
                            "image: url(:/icon/dndCopy.png);"
                            "subcontrol-position: right center;"
                            "subcontrol-origin: padding;"
                            "left: -2px;}";

    QLineEdit* lineedit1 = new QLineEdit();
    QLineEdit* lineedit2 = new QLineEdit();
    lineedit2->setProperty("readOnly", true);
    QLineEdit* lineedit3 = new QLineEdit();
    lineedit3->setObjectName("registrationDialog");

    lineedit1->setText("广阔天地");
    lineedit2->setText("大有作为");
    lineedit3->setText("毛主席万岁");

    mainLayOut->addWidget(lineedit1);
    mainLayOut->addWidget(lineedit2);
    mainLayOut->addWidget(lineedit3);

    QString complexStyle = "QLineEdit { color: red }"
                           "QLineEdit[readOnly=\"true\"] { color: gray }"
                           "QLineEdit#registrationDialog { color: brown }"
                           "QDialog QLineEdit { color: yellow }";
    //后面设置的QLineEdit没有起作用

    this->setStyleSheet("*[mandatoryField=\"true\"] { background-color: yellow }"
                        +pushBtn1Style+pushBtn2Style+complexStyle);
    this->setLayout(mainLayOut);
}

allwidgetshow.h

#ifndef ALLWIDGETSHOW_H
#define ALLWIDGETSHOW_H

#include <QObject>
#include <QWidget>

class AllWidgetShow : public QWidget
{
    Q_OBJECT
public:
    explicit AllWidgetShow(QWidget *parent = nullptr);

signals:

};

#endif // ALLWIDGETSHOW_H

特定部件样式表

QAbstractScrollArea

任何QAbstractScrollArea (Item视图,qtexttedit和QTextBrowser)的背景都可以使用背景属性进行设置。

效果图:
在这里插入图片描述

QCheckBox

QCheckBox的样式与QRadioButton的样式几乎相同。主要区别在于三状态QCheckBox具有不确定状态。
效果图:
在这里插入图片描述

QComboBox

QComboBox的弹出窗口是一个QAbstractItemView,并使用后代选择器进行样式设置。
当弹出窗口打开时,QComboBox获得“打开”状态。
在这里插入图片描述
在这里插入图片描述

QDockWidget

效果图:
在这里插入图片描述

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

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

相关文章

Golang 泛型介绍

泛型介绍 泛型是一种编写独立于所使用的特定类型的代码的方法。现在可以编写函数和类型(Functions and types)来使用一组类型中的任何一种。 泛型为语言添加了三个重要的东西: 1 函数和类型的类型参数。2 将接口类型定义为类型集&#xff0c;包括没有方法的类型。3 类型推断…

五项热门技术领域和应用场景

介绍五种当下比较热门的技术&#xff0c;分别是人工智能、云计算、数据分析、微服务和区块链。每种技术都有自己的定义、子领域、应用场景和学习难度。这些技术都有着广阔的发展前景和市场需求&#xff0c;对于想要从事或了解这些领域的人来说&#xff0c;都是很有价值的知识。…

【react 全家桶】初始化脚手架

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 10 【初始化脚手架】1.什么是 React 脚…

时序数据的内存服务

说明 既要坚定锻炼成熟架构的道路&#xff0c;也要在合理的范围内重塑设计 计算时序数据的特征&#xff0c;少不了“Rolling”类的操作。过去&#xff0c;直接采用pandas进行rolling&#xff0c;效率很不错&#xff0c;但是在实战应用时不太行。 反思下来&#xff1a;离线的操…

Linux --- 软件安装、项目部署

一、软件安装 1.1、软件安装方式 在Linux系统中&#xff0c;安装软件的方式主要有四种&#xff0c;这四种安装方式的特点如下&#xff1a; 1.2、安装JDK 上述我们介绍了Linux系统软件安装的四种形式&#xff0c;接下来我们就通过第一种(二进制发布包)形式来安装 JDK。 JDK…

文案优化技巧,批量文案改写工具

在当今竞争激烈的市场中&#xff0c;一篇优秀的文案可以吸引更多的潜在客户&#xff0c;提高转化率&#xff0c;带来更多的收益。然而&#xff0c;写出优秀的文案有时是一项具有挑战性的任务。许多人不得不花费大量的时间和精力来编辑和重写它们&#xff0c;这不仅耗时费力&…

具有柔性结构的孤岛直流微电网的分级控制(Malab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 1 概述 2 数学…

PICO 4 Pro:加入眼动和面部追踪,VR体验乐趣加倍

VR产品的体验在最近几年得到长足的进展&#xff0c;其中有几个重要的关键点。2019-2020年&#xff0c;VR一体机超越PC VR成为主流&#xff0c;便携性和综合体验做到了极佳的均衡。到了2022年&#xff0c;Pancake光学、彩色VST透视、眼动追踪、面部追踪等技术开始落地&#xff0…

MB510 3BSE002540R1在机器视觉工业领域最基本的应用

​ MB510 3BSE002540R1在机器视觉工业领域最基本的应用 大家都说人类感知外界信息的80%是通过眼睛获得的&#xff0c;图像包含的信息量是最巨大的。那么机器视觉技术的出现&#xff0c;就是为机器设备安上了感知外界的眼睛&#xff0c;使机器具有像人一样的视觉功能&#xff0c…

京东淘宝天猫户外服饰行业数据分析(电商数据查询软件)

户外运动越来越火&#xff0c;甚至还形成了一种独有的穿衣风格——“户外穿搭风”。 冲锋衣、工装裤、工装裙、口袋马甲、渔夫帽等都是这两年在这种户外穿搭风潮席卷之下爆红的产物。无论是在京东还是淘宝天猫&#xff0c;这类服饰的销售表现都比较出色。 京东数据&#xff1a;…

Spark大数据处理学习笔记(3.1)掌握RDD的创建

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/oT0of】 文章目录 一、准备工作1.1 准备文件1.1.1 准备本地系统文件1.1.2 启动HDFS服务1.1.3 上传文件到HDFS 1.2 启动Spark Shell1.2.1 启动Spark服务1.2.2 启动Spark Shell 二、创建RDD2.1 通过…

Java语言背景介绍 及 语言跨平台原理

01_Java语言背景介绍 Java语言的三个版本&#xff1a; ●Java SE ● Java ME ●Java EE Java SE&#xff1a; Java语言的&#xff08;标准版&#xff09;&#xff0c;用于桌面应用的开发&#xff0c;是其他两个版本的基础。 桌面应用&#xff1a;GUI程序&#xff0c;是采…

科普丨关于 A/B 测试的十问十答

你想知道的&#xff0c;都在这里&#xff01;本文是神策数据「十问十答」科普系列文章的第二期&#xff0c;围绕 A/B 测试展开。 1 Q&#xff1a;什么是 A/B 测试&#xff1f; A&#xff1a;A/B 测试作为互联网企业的核心增长手段之一&#xff0c;其价值已在实际应用中被多次验…

ERTEC200P-2 PROFINET设备完全开发手册(6-2)

6.2 诊断与报警实验 首先确认固件为 App1_STANDARD, 将宏定义改为&#xff1a; #define EXAMPL_DEV_CONFIG_VERSION 1 参照第6节的内容&#xff0c;编译和调试固件&#xff0c;并在TIA Portal 中建立RT项目。启动固件后&#xff0c;TIA Portal 切换到在线&#xff0c;可以看…

springboot+vue人职匹配推荐系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的人职匹配推荐系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 目前有各类成品java毕设&#xff0c;需要请看文…

《离散数学导学》精炼——第9章(函数)

学习是一个长久而艰苦的过程&#xff0c;但不学习则更艰苦。 文章目录 引言正文函数的定义全函数覆盖运算函数的性质&#xff08;重点&#xff09;单射满射双射 递归函数良定义 引言 笔者一直觉得在计算机这一学科的学习中&#xff0c;离散数学是极为重要的知识基础。离散化的…

node中模块化

目录 模块化概念模块化规范Node.js 中模块的分类加载模块 模块作用域module对象module.exports 对象exports 对象 Node.js中的模块化规范 模块化概念 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可…

SpringBoot的Filter过滤器结合JWT实现登录验证

概念&#xff1a;Filter 过滤器&#xff0c;是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;登录校验、统一编码处理、敏感字符处理等…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题27移除元素) 2023.4.18

目录 前言算法题&#xff08;LeetCode 27.移除元素&#xff09;—&#xff08;保姆级别讲解&#xff09;分析题目算法思想&#xff08;重要&#xff09;暴力解法代码&#xff1a;双指针法&#xff08;快慢指针法&#xff09;代码&#xff1a;反思 结束语 前言 本文章一部分内容…

UDP - C/S模型

由于UDP不需要维护连接&#xff0c;程序逻辑简单了很多&#xff0c;但是UDP协议是不可靠的&#xff0c;保证通讯可靠性的机制需要在应用层实现。 通信函数 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 参…