Qt 利用stylesheet 设置按钮五态图标

2023-05-16


用过Qt的相信大家都对QPushButton这个类十分熟悉,下面将介绍一种利用setstylesheet的方式,设置按钮的五种状态。
在Qt中QPushButton在视觉上给我们有以下五种状态,分别是normal常态,hover悬停态,pressed点击态,focus焦点停留态以及disabled无法点击态;首先准备好五态的图标,


以下是代码实现:

      mainwindow,h


#ifndef MAINWINDOW_H  

#define MAINWINDOW_H  

#include <QtGui>  

  

#include <QMainWindow>  

  

class MainWindow : public QMainWindow  

{  

    Q_OBJECT  

  

public:  

    MainWindow(QWidget *parent = 0);  

    ~MainWindow();  

  

private:  

    void prepareUI();  

  //  void prepareSLOT();  

    void prepareStyle();  

    QPushButton     *mpBtn1;  

    QPushButton     *mpBtn2;  

    QPushButton     *mpBtn3;  

    QWidget         *mpBgd;  

  

};  

  

#endif // MAINWINDOW_H


  

mainwindow.cpp  

#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    prepareUI();
    prepareStyle();
}
MainWindow::~MainWindow()
{
}
void MainWindow::prepareUI()
{
    this->setFixedSize(200,400);
    QVBoxLayout *vlayout = new QVBoxLayout;	//设置垂直布局
    vlayout->setContentsMargins(20,0,20,0);
    mpBgd = new QWidget();
    mpBgd->setObjectName("bgd");
    setCentralWidget(mpBgd);
    mpBtn1 = new QPushButton();
    mpBtn2 = new QPushButton();
    mpBtn3 = new QPushButton();
    mpBtn1->setFixedSize(128,128);	//将三个按钮设置为图标大小
    mpBtn2->setFixedSize(128,128);
    mpBtn3->setFixedSize(128,128);
    vlayout->addWidget(mpBtn1,Qt::AlignHCenter);
    vlayout->addWidget(mpBtn2,Qt::AlignHCenter);
    vlayout->addWidget(mpBtn3,Qt::AlignHCenter);
    mpBgd->setLayout(vlayout);
    mpBtn2->setFocus();        //按钮2设置为焦点停留状态
    mpBtn3->setDisabled(true); //按钮3设置为无法点击状态
}
void MainWindow::prepareStyle()
{
    setStyleSheet("QPushButton{border-image:url(./res/normal.png);padding:0px;border:none}"
                  "QPushButton:hover{border-image:url(./res/hover.png)}"
                  "QPushButton:pressed{border-image:url(./res/pressed.png)}"
                  "QPushButton:disabled{border-image:url(./res/disabled.png)}"
                  "QPushButton:focus{border-image:url(./res/focus.png)}"
                  "QPushButton:focus:hover{border-image:url(./res/hover.png)}"
                  "QPushButton:focus:pressed{border-image:url(./res/pressed.png)}"
                  );
	//如果不加QPushButton:focus:hover和 focus:pressed 那么按钮出于焦点停留态后,鼠标悬停和点击将无反应
    mpBgd->setStyleSheet("QWidget#bgd{background-color: cyan;border:none;}");
}


  

运行效果 : 第一个按钮为常态,二三分别为焦点停留态和无法点击态,当悬停在按钮一二上,有改变状态颜色,当点击第三个按钮时则无反应


  

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 利用stylesheet 设置按钮五态图标 的相关文章

  • ASP.NET - 如何仅在尚未包含 CSS 的情况下包含 CSS?

    我使用下面的代码动态包含 CSS 文件 HtmlHead head HtmlHead Page Header HtmlLink link new HtmlLink link Attributes Add href Page ResolveC
  • Javascript 设置打印样式表

    如何修改打印样式表对象的样式 我正在使用 jQuery 如果这有帮助的话 我基本上想设置一个对象的 css 属性 但该属性仅适用于打印 而不适用于屏幕 例如 myobject css background white print 这个问题有
  • 如何使用 Twitter Bootstrap 在 Twitter 网站上复制关注/取消关注悬停操作?

    当您查看自己关注的人时Twitter 按钮从 关注 变为 取消关注 从绿色变为红色 并且从复选标记变为 x 标记 我如何在我的网站上复制此内容 我意识到它可能是 bootstrap css 和 bootstrap buttons js 的组
  • 让用户添加自己的样式表是一个坏主意吗?

    我是 php 新手 我试图弄清楚这是一个坏主意还是一个安全风险 我有一个提供给用户的数据表 它有一个加载的默认样式表 但如果用户想要包含自己的样式表 我已经制作了它 这样他们就可以指向自己的样式表 http www mysite com i
  • 如何禁用继承的 css 样式?

    因此 我使用以下方法创建一个带有圆角的容器 div rounded background CFFEB6 url tr gif no repeat top right div rounded div background url br gif
  • css中*符号的用法

    我发现一些样式表使用 其上的符号 例如 zoom 1 什么是 符号站 有时看起来像 class span 这 谁能帮我解释一下这个符号的用法 in css zoom是一个适用于 ie6 和 ie7 的 hack 是一个通配符 匹配所有元素或
  • 将自定义颜色的按钮设置为禁用样式

    我有一个继承的类QWidget 在某些情况下 我希望将其设置为禁用 该小部件有一些颜色按钮 它们是从颜色列表中设置的 void MyWidget colorUpdate QString color if color isEmpty QStr
  • 如何定位特定 div ID 的标题?

    我正在尝试使用与页面其余部分的标题不同的字体系列来设置标题中的所有标题的样式 但我无法使样式仅适用于特定的标题 ID 这是我尝试过的 header h1 h2 h3 h4 font family Helvetica 但这会导致所有 h1 2
  • 只是尝试为输入文本提供粗体字体

    我试图用下面的方式为输入提供粗体字体 但它不起作用
  • 自动 jquery 样式表切换器

    我见过许多 css 切换器 它们放置一个按钮 允许用户更改样式以适合他们的口味 我正在寻找尚未找到的类似解决方案 这是最接近的 http net tutsplus com demos 03 jQueryStyleSwitcher demo
  • 在 CSS 中设置 `` 元素的样式?

    谁能向我解释一下为什么我们可以设置元素的样式html 它和有什么区别body 我通常会看到教程和多个网站使用body永不html 我是在使用的时候才发现的YUI 3 CSS 重置 http developer yahoo com yui 3
  • 仅加载适用于 ipad 的 css 文件

    我正在尝试加载仅适用于 ipad 的 css 文件 我试过这个 它适用于 iPad 但如果我在桌面上将分辨率降低到 1024 x 768 并在 Firefox 中查看该网站 ipad 样式表也会加载 所以我尝试 但仍然是同样的问题 我如
  • 样式表中的单位“em”取决于什么。 CSS

    em根据屏幕尺寸调整尺寸 是的 但很困惑 em 取决于浏览器设置吗 哪些设置 或者 em 取决于屏幕分辨率 或者帮助它依赖什么以及从哪里可以更改这些元素以观察使用 em 时大小的差异 1em 等于当前字体大小 2em 表示当前字体大小的 2
  • Chrome默认按钮样式

    是否可以在 CSS 中获取默认的 Chrome 按钮样式 当然很多人会说用http pastebin com zjkW2cJe http pastebin com zjkW2cJe or http pastebin com xKGBZFPg
  • 每个页面有一个 CSS 文件还是单独的 CSS 文件?

    当我构建页面时 我想要为每个页面使用单独的样式表还是为整个网站使用一个大型样式表 出于加载目的 单个文件不是更好的做法吗 因为加载时的总 CSS 会更少 使用单个文件 CSS 文件会被缓存 因此减少了为每个访问的新页面下载新文件的需要 为了
  • 在 JavaScript 或 jQuery 中动态更改 CSS 规则

    我正在寻找一种方法来更改文档中导入的样式表的 CSS 规则 所以我有一个外部样式表和一些class and div里面的属性 我想使用 JavaScript 或 jQuery 更改其中一项规则 这是一个例子 red color red 所以
  • 在锚链接中添加工具提示[重复]

    这个问题已经存在了 我想在文本中添加工具提示 例如 如果我有这样的代码 a href http google com title Google a 鼠标悬停时 我想显示该工具提示 使用title这是一个好方法 但是我怎样才能让它看起来更好呢
  • PHP 将样式表添加到标头

    有没有办法在包含头文件后将样式表添加到标题中 假设我们有这样的代码 class content public stylesheets array public function addStylesheets stylesheets if e
  • style.css 在 WordPress 中不起作用

    我的 WordPress 有问题 我已经创建了所有需要的文件 包括 style css index php 等 但页面没有样式 在标题中 除其他外 我把这个
  • 如何在 scss 中包含仅限 Safari 的样式? [复制]

    这个问题在这里已经有答案了 我只是想修改仅适用于 safari 浏览器的样式属性 这将覆盖默认属性 简单的例子 Default div color blue Safari 浏览器 div color red 我想这可以通过 scss 的 i

随机推荐

  • YOLO3D 基于图像的3D目标检测算法

    参考文档 xff1a https ruhyadi github io project computer vision yolo3d 代码 xff1a https github com ruhyadi yolo3d lightning 本次分
  • nuscenes激光雷达数据抽稀

    nuScenes文件说明 Mini nuScenes下载后得到名称为 v1 0 mini tgz 的压缩包 xff0c 主要包含maps samples sweeps和v1 0 mini等4个文件夹 下面分别进行简要介绍 maps xff1
  • Ubuntu执行定时命令的方法

    简单使用如下 输入下面的命令安装at xff1a sudo apt span class token operator span get install at 输入下面的命令 xff1a span class token comment e
  • Window10_WSL2 初体验 [win下linux子系统]

    文章目录 参考与前言安装WSL切换wsl2以使用GPU资源启动时进入固定文件夹使用进程使用GPUROS gazebo 仿真待更新 参考与前言 Install WSL 此文主要是写一下windows下怎样快乐使用ubuntu 毫无障碍 xff
  • Linux环境下——C语言聊天室项目界面展示

    运行环境ubuntu12 04 服务器启动 xff1a 用户注册 xff1a 用户登录 xff1a 私聊功能 Id 61 32用户给id 61 33用户发送hello xff1b 群聊功能 xff1a Id 61 33用户向所有人发送hel
  • 算法---短除法求最大公约数

    短除法 短除符号就是除号倒过来 短除就是在除法中写除数的地方写两个数共有的质因数 xff0c 然后落下两个数被公有质因数整除的商 xff0c 之后再除 xff0c 以此类推 xff0c 直到结果互质为止 xff08 两个数互质 xff09
  • Kubernetes(K8S)集群部署搭建图文教程(最全)

    Kubernetes 集群安装 前期准备集群安装系统初始化Harbor采取私有的仓库去镜像使用集群检测集群功能演示 前期准备 第一步 xff1a Router软路由构建 第二步 xff1a centos7安装 5台 xff08 自行安装 x
  • Nginx反向代理部署在K8s上的seafile服务,上传文件缓慢的解决方案

    前言 在k8s上搭建好seafile云文档服务后 xff0c 在拥有公网IP的反向代理服务器上采用Nginx进行反向代理 问题描述 seafile网页上传文件时发现 xff1a 上传几kB的小文件正常 xff0c 上传1MB以上大小的文件卡
  • FreeBSD13简单命令安装KDE5

    span class token comment 经过个人多次测试 xff0c 注释部分是个的经验 xff0c 试过10多次KDE安装总结 xff0c 希望对大家有用 xff0c 谢谢点赞 span span class token fun
  • kali对未知web server透测试1

    靶机渗透 主机IPkali192 168 101 62靶机未知 靶机探测 靶机下载 xff1a https pan baidu com s 1P8s ntf05dRSWOg LrxD Q 提取码 xff1a 1234 1 打开靶机 选择我已
  • kali对未知web server透测试2

    环境介绍 主机IP xff08 NAT xff09 kali192 168 252 128靶机2未知 靶机下载 xff1a https pan baidu com s 1u5xbmU13wheXE4 M508qFw 提取码 xff1a 12
  • MS08_067复现+远程控制

    环境 主机ipkali Linux192 168 252 128Windows xp192 168 252 148 漏洞介绍 https docs microsoft com zh cn security updates Securityb
  • CVE-2020-0796(永恒之黑)复现,影响版本windws10,windos server2016

    漏洞介绍 https nvd nist gov vuln detail CVE 2020 0796 漏洞影响版本 Windows 10 Version 1903 for 32 bit Systems Windows 10 Version 1
  • hackbar工具安装使用教程

    HackBar工具介绍 HackBar 是一个浏览器上的一个插件 xff0c 包含一些黑客常用的工具 xff0c 比如SQL injection XSS 加密等 免费版下载 百度网盘 xff1a https pan baidu com s
  • python 百度aip实现文字识别

    介绍 百度aip模块是用于实现百度云与用户接口 xff0c 简单来说就是使用百度云所拥有的人工智能模块 模块使用 pip install baidu aip 下载百度云模块 登录百度云账号 填写信息 使用官方的文档 https cloud
  • python3 实现股票监控

    实现功能 1 设置股票的卖出个买入的价格 2 程序对价格进行监控 3 当价格达到预定值时发送邮件提醒 模块安装 pip install tushare pip install pandas 如果非常慢 xff1a https blog cs
  • 【网络安全CTF】BUUCTF(Basic篇)

    Linux Labs 解题思路 xff1a 已给用户名密码 xff0c 直接用ssh工具连接即可获取flag 查找flag在跟下 提交完成 BUU LFI COURSE 1 访问链接 xff1a 为php代码审计题 xff0c 看题目要求构
  • 密码学基本概念

    密码学简介 密码是经过加密过后的口令 xff0c 是指用特定的变换对数据信息进行加密保护或者安全身份认证的物质和技术 xff0c 密码学是对安全通信技术的研究 xff0c 要能够有效的防范潜在攻击 xff0c 也就是对信息加密解密的过程 密
  • 部署在k8s上的jenkins代理端口对外开放解决方案

    前言 Jenkins服务部署在k8s集群上 xff0c 之前的项目涉及的代理节点和集群在同一个内网网段 环境 Jenkins 对应jdk版本为openjdk version 34 11 0 18 34 问题描述 Jenkins要添加外部网络
  • Qt 利用stylesheet 设置按钮五态图标

    用过Qt的相信大家都对QPushButton这个类十分熟悉 xff0c 下面将介绍一种利用setstylesheet的方式 xff0c 设置按钮的五种状态 在Qt中QPushButton在视觉上给我们有以下五种状态 xff0c 分别是nor