当前位置: 首页 > news >正文

qt - 19种精美软件样式

qt - 19种精美软件样式

  • 一、效果演示
  • 二、核心程序
  • 三、下载链接


一、效果演示

请添加图片描述

在这里插入图片描述

二、核心程序

#include "mainwindow.h"#include <QtAdvancedStylesheet.h>
#include <QmlStyleUrlInterceptor.h>#include "ui_mainwindow.h"
#include <QDir>
#include <QApplication>
#include <QAction>
#include <QListWidgetItem>
#include <QDockWidget>
#include <QVBoxLayout>
#include <QPushButton>
#include <QColorDialog>
#include <QDebug>
#include <QQmlEngine>#include <iostream>#define _STR(x) #x
#define STRINGIFY(x)  _STR(x)/*** Private data class - pimpl*/
struct MainWindowPrivate
{CMainWindow* _this;Ui::MainWindow ui;acss::QtAdvancedStylesheet* AdvancedStyleSheet;QVector<QPushButton*> ThemeColorButtons;/*** Private data constructor*/MainWindowPrivate(CMainWindow* _public) : _this(_public) {}void createThemeColorDockWidget();void fillThemeMenu();void setSomeIcons();void setupQuickWidget();void updateThemeColorButtons();void updateQuickWidget();/*** Loads theme aware icons for the actions in the toolbar*/void loadThemeAwareToolbarActionIcons();
};void MainWindowPrivate::createThemeColorDockWidget()
{QDockWidget* dock = new QDockWidget(("Change Theme"), _this);QWidget* w = new QWidget(dock);auto Layout = new QVBoxLayout(w);Layout->setContentsMargins(12, 12, 12, 12);Layout->setSpacing(12);w->setLayout(Layout);dock->setWidget(w);_this->addDockWidget(Qt::LeftDockWidgetArea, dock);dock->setFloating(true);const auto& ThemeColors = AdvancedStyleSheet->themeColorVariables();for (auto itc = ThemeColors.constBegin(); itc != ThemeColors.constEnd(); ++itc){auto Button = new QPushButton(itc.key());QObject::connect(Button, &QPushButton::clicked, _this, &CMainWindow::onThemeColorButtonClicked);Layout->addWidget(Button);ThemeColorButtons.append(Button);}updateThemeColorButtons();
}void MainWindowPrivate::updateThemeColorButtons()
{for (auto Button : ThemeColorButtons){auto Color = AdvancedStyleSheet->themeColor(Button->text());QString TextColor = (Color.value() < 128) ? "#ffffff" : "#000000";QString ButtonStylesheet = QString("background-color: %1; color: %2;""border: none;").arg(Color.name()).arg(TextColor);Button->setStyleSheet(ButtonStylesheet);}
}void MainWindowPrivate::updateQuickWidget()
{const auto Source = ui.quickWidget->source();ui.quickWidget->setSource({});ui.quickWidget->engine()->clearComponentCache();ui.quickWidget->setSource(Source);ui.quickWidget->setStyleSheet(AdvancedStyleSheet->styleSheet());
}void MainWindowPrivate::fillThemeMenu()
{// Add actions for theme selectionauto m = ui.menuThemes;for (const auto& Theme : AdvancedStyleSheet->themes()){QAction* a = new QAction(Theme);m->addAction(a);QObject::connect(a, &QAction::triggered, _this, &CMainWindow::onThemeActionTriggered);}}void MainWindowPrivate::setSomeIcons()
{ui.actionToolbar->setIcon(AdvancedStyleSheet->styleIcon());QIcon Icon(":/full_features/images/logo_frame.svg");for (int i = 0; i < ui.listWidget_2->count(); ++i){ui.listWidget_2->item(i)->setIcon(Icon);}
}void MainWindowPrivate::setupQuickWidget()
{ui.quickWidget->engine()->setUrlInterceptor(new acss::CQmlStyleUrlInterceptor(AdvancedStyleSheet));ui.quickWidget->setStyleSheet(AdvancedStyleSheet->styleSheet());ui.quickWidget->setSource(QUrl("qrc:/full_features/qml/simple_demo.qml"));ui.quickWidget->setAttribute(Qt::WA_AlwaysStackOnTop);ui.quickWidget->setAttribute(Qt::WA_TranslucentBackground);ui.quickWidget->setClearColor(Qt::transparent);
}void MainWindowPrivate::loadThemeAwareToolbarActionIcons()
{ui.actionSelected->setIcon(AdvancedStyleSheet->loadThemeAwareSvgIcon(":/full_features/images/edit.svg"));ui.actionaction->setIcon(AdvancedStyleSheet->loadThemeAwareSvgIcon(":/full_features/images/folder_open.svg"));ui.actionaction2->setIcon(AdvancedStyleSheet->loadThemeAwareSvgIcon(":/full_features/images/save.svg"));ui.actionaction3->setIcon(AdvancedStyleSheet->loadThemeAwareSvgIcon(":/full_features/images/help_outline.svg"));
}CMainWindow::CMainWindow(QWidget *parent): QMainWindow(parent),d(new MainWindowPrivate(this))
{d->ui.setupUi(this);QString AppDir = qApp->applicationDirPath();QString StylesDir = STRINGIFY(STYLES_DIR);d->AdvancedStyleSheet = new acss::QtAdvancedStylesheet(this);d->AdvancedStyleSheet->setStylesDirPath(StylesDir);d->AdvancedStyleSheet->setOutputDirPath(AppDir + "/output");d->AdvancedStyleSheet->setCurrentStyle("qt_material");d->AdvancedStyleSheet->setDefaultTheme();d->AdvancedStyleSheet->updateStylesheet();setWindowIcon(d->AdvancedStyleSheet->styleIcon());qApp->setStyleSheet(d->AdvancedStyleSheet->styleSheet());connect(d->AdvancedStyleSheet, SIGNAL(stylesheetChanged()), this,SLOT(onStyleManagerStylesheetChanged()));d->createThemeColorDockWidget();d->fillThemeMenu();d->setSomeIcons();d->setupQuickWidget();d->loadThemeAwareToolbarActionIcons();
}CMainWindow::~CMainWindow()
{delete d;
}void CMainWindow::onThemeActionTriggered()
{auto Action = qobject_cast<QAction*>(sender());d->AdvancedStyleSheet->setCurrentTheme(Action->text());d->AdvancedStyleSheet->updateStylesheet();
}void CMainWindow::onStyleManagerStylesheetChanged()
{qApp->setStyleSheet(d->AdvancedStyleSheet->styleSheet());d->updateThemeColorButtons();d->updateQuickWidget();
}void CMainWindow::onThemeColorButtonClicked()
{auto Button = qobject_cast<QPushButton*>(sender());QColorDialog ColorDialog;auto Color = d->AdvancedStyleSheet->themeColor(Button->text());ColorDialog.setCurrentColor(Color);if (ColorDialog.exec() != QDialog::Accepted){return;}Color = ColorDialog.currentColor();d->AdvancedStyleSheet->setThemeVariableValue(Button->text(), Color.name());d->AdvancedStyleSheet->updateStylesheet();
}

三、下载链接

https://download.csdn.net/download/u013083044/88856325

相关文章:

qt - 19种精美软件样式

qt - 19种精美软件样式 一、效果演示二、核心程序三、下载链接 一、效果演示 二、核心程序 #include "mainwindow.h"#include <QtAdvancedStylesheet.h> #include <QmlStyleUrlInterceptor.h>#include "ui_mainwindow.h" #include <QDir&g…...

vue 使用docx库生成word表格文档

在Vue.js中生成Word表格文档&#xff0c;可以通过前端库来实现。这些库可以帮助我们轻松地将HTML表格转换为Word文档&#xff08;通常是.docx格式&#xff09;。以下是一些流行的前端库&#xff0c;它们可以用于在Vue项目中生成Word表格文档&#xff1a; docx…...

ElementUI table表格组件实现双击编辑单元格失去焦点还原,支持多单元格

在使用ElementUI table表格组件时有时需要双击单元格显示编辑状态&#xff0c;失去焦点时还原表格显示。 实现思路&#xff1a; 在数据中增加isFocus:false.控制是否显示在table中用cell-dblclick双击方法 先看效果&#xff1a; 上源码&#xff1a;在表格模板中用scope.row…...

Java基于SpringBoot+Vue的图书管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【云安全】Hypervisor与虚拟机

Hypervisor 也被称为虚拟机监视器&#xff08;Virtual Machine Monitor&#xff0c;VMM&#xff09;&#xff0c;主要作用是让多个操作系统可以在同一台物理机上运行。 Type-1 Hypervisor 与 Typer-2 Hypervisor Type-1 Hypervisor 直接安装在物理服务器上&#xff0c;不依赖…...

JS文本加密方法探究

在前端开发中&#xff0c;有时候我们需要对敏感文本进行简单的加密&#xff0c;以提高安全性。本文将介绍一种基于 JavaScript 实现的文本加密方法&#xff0c;使用了 Base64、Unicode 和 ROT13 编码。 示例代码 function encodeText(text) {// Base64编码var base64Encoded …...

推荐彩虹知识付费商城免授权7.0源码

彩虹知识付费商城免授权7.0源码&#xff0c;最低配置环境 PHP7.2 1、上传源码到网站根目录&#xff0c;导入数据库文件&#xff1a;xydai.sql 2、修改数据库配置文件&#xff1a;/config.php 3、后台&#xff1a;/admin 账号&#xff1a;admin 密码&#xff1a;123456 4、前…...

【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch

文章目录 01 Elasticsearch Sink 基础概念02 Elasticsearch Sink 工作原理03 Elasticsearch Sink 核心组件04 Elasticsearch Sink 配置参数05 Elasticsearch Sink 依赖管理06 Elasticsearch Sink 初阶实战07 Elasticsearch Sink 进阶实战7.1 包结构 & 项目配置项目配置appl…...

一、ActiveMQ介绍

ActiveMQ介绍 一、JMS1.jms介绍2.jms消息传递模式3.JMS编码总体架构 二、消息中间件三、ActiveMQ介绍1.引入的原因1.1 原因1.2 遇到的问题1.3 解决思路 2.定义3.特点3.1 异步处理3.2 应用系统之间解耦3.3 实际-整体架构 4.作用 一、JMS 1.jms介绍 jms是java消息服务接口规范&…...

【牛客】寒假训练营1 I-It‘s bertrand paradox. Again! 题解

传送门&#xff1a;It’s bertrand paradox. Again! 标签&#xff1a;随机 题目大意 有两个人分别用两种方式在二维平面上随机生成1e5个圆&#xff0c;每个圆上的每一个点(x,y)都满足-100<x<100且-100<y<100&#xff0c;现在将某个人生成的1e5个圆的圆心和半径告…...

各种手型都合适,功能高度可定制,雷柏VT9PRO mini和VT9PRO游戏鼠标上手

去年雷柏推出了一系列支持4KHz回报率的鼠标&#xff0c;有着非常敏捷的反应速度&#xff0c;在游戏中操作体验十分出色。尤其是这系列4K鼠标不仅型号丰富&#xff0c;而且对玩家的操作习惯、手型适应也很好&#xff0c;像是VT9系列就主打轻巧&#xff0c;还有专门针对小手用户的…...

sql建库,建表基础操作

当涉及到SQL建库和建表操作时&#xff0c;以下是一个简单的示例&#xff1a; 1. 建库&#xff08;创建数据库&#xff09; sql复制代码 CREATE DATABASE mydatabase; 上述语句将创建一个名为mydatabase的数据库。 2. 选择数据库 在创建表之前&#xff0c;需要选择要在其中…...

算法训练营day32,贪心算法6

import "strconv" //738. 单调递增的数字 func monotoneIncreasingDigits(n int) int { str : strconv.Itoa(n) nums : []byte(str) length : len(nums) if length < 1 { return n } for i : length - 1; i > 0; i-- { //如果前一个数字比当前值大&#xff0…...

CTR之行为序列建模用户兴趣:DIN

在前面的文章中&#xff0c;已经介绍了很多关于推荐系统中CTR预估的相关技术&#xff0c;今天这篇文章也是延续这个主题。但不同的&#xff0c;重点是关于用户行为序列建模&#xff0c;阿里出品。 概要 论文&#xff1a;Deep Interest Network for Click-Through Rate Predict…...

Java使用Redis实现分页功能

分页功能实现应该是比较常见的&#xff0c;对于redis来说&#xff0c;近期刷题就发现了lrange、zrange这些指令&#xff0c;这个指令怎么使用呢&#xff1f; 我们接下来就来讲解下。 目录 指令简介lrangezrange Java实现Redis实现分页功能 指令简介 lrange lrange 是 Redis 中…...

Qt标准对话框设置

Qt标准对话框设置&#xff0c;设置字体、调色板、进度条等。 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this); }MainWindow::~MainWi…...

如何让Obsidian实现电脑端和安卓端同步

Obsidian是一款知名的笔记软件&#xff0c;支持Markdown语法&#xff0c;它允许用户在多个设备之间同步文件。要在安卓设备上实现同步&#xff0c;可以使用remote save插件&#xff0c;以下是具体操作步骤&#xff1a; 首先是安装电脑端的obsidian&#xff0c;然后依次下载obs…...

windows系统中jenkins构建报错提示“拒绝访问”

一.背景 之前徒弟在windows中安装的jenkins,运行的时候用的是java -jar jenkins.war来运行的。服务器只有1个盘符C盘。今天说构建错误了&#xff0c;问我修改了啥&#xff0c;我年前是修改过构建思路的。 二.问题分析 先看jenkins构建任务的日志&#xff0c;大概是xcopy命令执…...

服务器防火墙的应用技术有哪些?

随着互联网的发展&#xff0c;网络安全问题更加严峻。服务器防火墙技术作为一种基础的网络安全技术&#xff0c;对于保障我们的网络安全至关重要。本文将介绍服务器防火墙的概念和作用&#xff0c;以及主要的服务器防火墙技术&#xff0c;包括数据包过滤、状态检测、代理服务、…...

力扣:40. 组合总和 II

回溯&#xff1a; 1.先声明好大集合和小集合&#xff0c;在调用回溯函数&#xff0c;终止条件为sumtarget&#xff0c;要进行剪枝操作减少遍历的次数&#xff0c;去重操作防止数组中有两个相同的值来组成的集合相同。 class Solution {List<List<Integer>> li1ne…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...