【Qt】qss 设置通过 addAction 添加的 QToolButton的图标

在这里插入图片描述

文章目录

      • 1. 使用 QSS 和状态
      • 示例代码
      • 2. 使用 QSS 动态更改图标
      • QSS 示例
      • 总结

在 Qt 中,QSS 不能直接用于为 QAction 设置图标,因为 QSS 主要用于样式和外观的设置,而不是用于数据(如图标)的设置。

不过,你可以通过一些间接的方法来实现类似的效果,例如使用 QToolButtonicon 属性来根据状态或其他条件更改图标。以下是一些方法来实现这种灵活性:

1. 使用 QSS 和状态

虽然不能直接通过 QSS 设置 QAction 的图标,但你可以利用 QToolButton 的状态来改变其图标。你可以在 QSS 中定义不同状态下的样式,并在代码中根据需要更改图标。

示例代码

#include <QApplication>
#include <QToolButton>
#include <QVBoxLayout>
#include <QWidget>
#include <QFile>
#include <QTextStream>
#include <QIcon>void loadStyleSheet(const QString &fileName) {QFile file(fileName);if (file.open(QFile::ReadOnly)) {QTextStream stream(&file);QString styleSheet = stream.readAll();qApp->setStyleSheet(styleSheet);}
}int main(int argc, char *argv[]) {QApplication app(argc, argv);// 加载 QSS 文件loadStyleSheet("styles.qss");QWidget window;QVBoxLayout layout(&window);QToolButton *toolButton = new QToolButton();toolButton->setText("Click me!");  // 可以设置文本toolButton->setIconSize(QSize(32, 32));  // 设置图标大小// 创建 QActionQAction *action = new QAction("Action", toolButton);toolButton->addAction(action);// 设置 QToolButton 的默认动作toolButton->setDefaultAction(action);layout.addWidget(toolButton);window.setLayout(&layout);window.resize(300, 200);window.show();// 动态更改图标toolButton->setIcon(QIcon(":/images/icon.png"));  // 设置默认图标// 例如,当按钮被点击时,改变图标QObject::connect(toolButton, &QToolButton::clicked, [toolButton]() {static bool toggle = false;toggle = !toggle;toolButton->setIcon(QIcon(toggle ? ":/images/icon2.png" : ":/images/icon.png"));});return app.exec();
}

2. 使用 QSS 动态更改图标

如果你希望通过 QSS 来灵活地更改图标,你可以在代码中根据条件动态设置图标,然后通过 QSS 来调整其他样式。

QSS 示例

/* styles.qss */
QToolButton {background-color: lightgray;border: none;  /* 去掉边框 */
}QToolButton:hover {background-color: darkgray;
}QToolButton:pressed {background-color: gray;
}/* 这里没有办法直接设置图标 */

总结

  • QSS 不能直接设置 QAction 的图标
  • 你可以通过 QToolButton 的状态和代码逻辑来动态更改图标。
  • 使用 setIcon() 方法在代码中设置图标。

如果你需要通过某种方式来实现更复杂的图标替换,可能需要考虑其他设计模式,例如使用模型-视图架构来管理图标和状态。希望这能帮助到你!如果有其他问题,请随时询问。

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

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

相关文章

HTB:Antique[WriteUP]

目录 连接至HTB服务器并启动靶机 1.After running an nmap scan on TCP ports we identify port 23 open. If we run another scan on UDP ports, which port do we find open? 2.What service is running on the UDP port that we identified in the previous question? …

HTTP Content-Type

HTTP Content-Type 概述 在HTTP协议中&#xff0c;Content-Type是一个非常重要的头部字段&#xff0c;它用于指示客户端请求的资源或服务器响应的内容的MIME类型。MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;类型是一种标准&#xff0c;用于标识文档…

Next.js14快速上手

文章目录 ***客户端***什么是Next项目在线地址官方文档项目创建查看项目目录结构app属于根目录 ***服务端***vercel数据库prisma 客户端 什么是Next Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。您可以使用 React Components 来构建用户界面&#xff0c;并使用 Ne…

java实现日志按天打印

<?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 应用名称&#xff1a;和统一配置中的项目代码保持一致&#xff08;小写&#xff09; --><property name"APP_NAME" value"mita-main"/><!--日…

京准电钟解读:NTP网络对时服务器助力厂区改造方案

京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 1&#xff09;系统概述 时钟系统可通过网络进行管理及时间校对&#xff0c;为厂区提供高精度、全天时、全天候 的授时服务&#xff0c;统一全厂各种系统…

vue中使用 html2canvas绘制图片并下载

html2canvas 是一个非常流行的库&#xff0c;可以将 HTML 元素转换为 canvas 图像。 1. 安装 html2canvas 首先&#xff0c;你需要安装 html2canvas 库。你可以使用 npm 或 yarn 来安装&#xff1a; npm install html2canvas yarn add html2canvas 2. 在 Vue 组件中使用 h…

AudioSetCaps数据集:包含190万对来自AudioSet录音的音频-字幕对。

2024-10-21&#xff0c;由西北工业大学、西安联丰声学技术有限公司、南洋理工大学、萨里大学和中国科学院声学研究所创建了AudioSetCaps数据集&#xff0c;包含190万对来自AudioSet录音的音频-字幕对。这个数据集在音频-文本检索和自动音频字幕两项下游任务上展现了卓越的性能&…

百度翻译以及另外三款翻译工具推荐!!!

在这个全球化的时代&#xff0c;翻译工具已经成为我们生活中不可或缺的一部分。我们需要使用翻译工具来克服语言障碍&#xff0c;无论是出国旅行、商务谈判还是学术研究。那么&#xff0c;市场上有各种各样的翻译工具。有哪些好用的在线翻译软件呢&#xff1f;别担心&#xff0…

系统架构设计师教程 第2章 2.1-2计算机系统及硬件 笔记

2.1计算机系统概述 ★☆☆☆☆ 计算机系统 (Computer System) 是指用于数据管理的计算机硬件、软件及网络组成的系统。 一般指由硬件子系统和软件子系统组成的系统&#xff0c;简称为计算机。 将连接多个计算机以实现计算机间数据交换能力的网络设备&#xff0c;称为计算机网…

uniapp基础笔记

与html区别 uni-app简单来说是 vue的语法 小程序的api。 文件结构 html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><script type"text/javascript"></script><style t…

springboot配置文件占位符${},赋值方式

一&#xff1a;配置文件内部赋值 server:port: 48080 url: http://127.0.0.1:${server.port}这时url中的${server.port}48080 二&#xff1a;系统环境变量 有时我们在看到配置文件怎么没有找到占位符的变量的设置了&#xff0c;那就有可能调用了&#xff0c;系统的环境变量 …

解决 PHP 上传数据超时 504 错误:

解决 PHP 上传数据超时 504 错误&#xff1a; 一、了解问题 1.1 什么是 PHP 上传数据超时 504 错误&#xff1f; 当我们使用 PHP 进行文件上传时&#xff0c;如果上传的文件较大&#xff0c;可能会遇到数据超时错误。超时错误通常被服务器和网关使用&#xff0c;表示网络请求…

15_LVM的磁盘管理

系列文章导航&#xff1a;01_Linux基础操作CentOS7学习笔记-CSDN博客 文章目录 一、LVM的核心概念二、LVM的工作原理三、LVM逻辑卷的创建及使用创建LVM逻辑卷删除逻辑卷 四、LVM逻辑卷的拉伸与缩减拉伸一个逻辑卷拉伸一个卷组缩小一个逻辑卷缩小卷组 五、LVM逻辑卷快照备份与还…

LabVIEW提高开发效率技巧----节省内存

在LabVIEW开发过程中&#xff0c;内存管理是保障程序稳定性和性能的关键。本文将详细介绍如何通过队列处理来节省内存&#xff0c;尤其是如何通过解耦释放不再需要的数据&#xff0c;防止内存泄漏。通过多个实际例子&#xff0c;从不同角度探讨队列处理在大数据量或长时间运行的…

HTB:CozyHosting[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are open on CozyHosting? 2.The webserver on TCP port 80 issues a redirect to what domain? 3.What relative path on the webserver returns a 500 error? 4.What is the Java web framework used in the we…

初识算法 · 二分查找(4)

目录 前言&#xff1a; 寻找峰值 题目解析 算法原理 算法编写 寻找旋转排序数组中的最小值 题目解析 算法原理 算法编写 寻找缺失的数字 题目解析 算法原理 算法编写 前言&#xff1a; ​本文的主题是二分查找&#xff0c;通过三道题目讲解&#xff0c;一道是寻找…

【Web开发】什么是Nuxt? 利用Nuxt快速搭建前端项目

Nuxt官网&#xff1a;https://nuxt.com/ 启动一个Nuxt项目 在vscode的项目文件终端运行以下命令&#xff1a; npx nuxilatest init <my-app>npm installnpm run dev然后就启动了一个Nuxt项目 安装Nuxt UI Nuxt UI官网&#xff1a;https://ui.nuxt.com/ npx nuxilates…

线程的同步

目录 引入 认识条件变量 快速认识接口​编辑 认识条件变量​编辑 测试代码​编辑 生产消费模型 为何要使用生产者消费者模型 理解 编写生产消费模型 BlockingQueue 单生产单消费 多生产多消费 引入 同步&#xff1a;在保证数据安全的前提下&#xff0c;让线程…

【小白学机器学习22】 多变量分析,多变量回归(草稿)

目录 1 概念名词&#xff1a; 1.1 双变量分析与单因素分析 1.2 变化 1.3 相关分析 Correlation analysis 1.4 回归分析 Regression analysis 1.5 相干和相关 1.5.1 相干relevant 1.5.2 相关Correlation 2 双变量分析&#xff0c;也就是单因素分析 3 相关分析 4 正…

The database mes could not be exclusively locked to perform the operation.

当你尝试更改数据库名字时&#xff0c;如果遇到错误消息 "The database [database_name] could not be exclusively locked to perform the operation"&#xff0c;这意味着 SQL Server 无法获得对数据库的独占锁&#xff0c;因为该数据库当前正在被其他会话使用。这…