文章目录

  • 简介
    • 方式1:通过修改样式表的方式去实现
    • 方式2:通过继承QPushButton去实现一个自定义的按钮;
    • 方式3:在主界面中给按钮安装事件过滤器的方式去实现
    • 总结

简介

  • 本文介绍了Qt中的按钮实现响应鼠标悬浮、按下、松开后的效果,在三种状态下,按钮改变不同的背景图片。

  • 方式1:通过修改样式表的方式去实现;

  • 方式2:通过继承QPushButton去实现一个自定义的按钮;

  • 方式3:在主界面中给按钮安装事件过滤器的方式去实现

方式1:通过修改样式表的方式去实现

  • 这里尽量不要有中文注释,我这里注释后就达不到想要的效果
  • 这个是修改myBtn父类的样式表
// 默认显示的图片
QPushButton#myBtn
{border-image:url(:/fly1.png);
}
// 进入显示的图片
QPushButton#myBtn:hover
{border-image:url(:/fly2.png);
}
// 按下显示图片
QPushButton#myBtn:pressed
{border-image:url(:/fly3.png);
}

方式2:通过继承QPushButton去实现一个自定义的按钮;

继承QPushButton类后,重写了event()方法

bool MyPushButton::event(QEvent *event)
{switch (event->type()){case QEvent::Enter:this->setIcon(QIcon(":/icons/images/c.png"));break;case QEvent::Leave:this->setIcon(QIcon(":/icons/images/c1.png"));break;case QEvent::MouseButtonPress:this->setIcon(QIcon(":/icons/images/暂停.png"));break;case QEvent::MouseButtonRelease:this->setIcon(QIcon(":/icons/images/c1.png"));break;default:break;}return QPushButton::event(event);
}

方式3:在主界面中给按钮安装事件过滤器的方式去实现

  • 注意这里先要给控件注册事件处理器
  • 重写事件过滤器
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 给控件注册事件过滤器ui->myBtn->installEventFilter(this);
}MainWindow::~MainWindow()
{delete ui;
}bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{switch (event->type()) {case QEvent::HoverEnter:if(obj == ui->myBtn)ui->myBtn->setIcon(QIcon(":/fly1.png")); // 按钮进入break;case QEvent::HoverLeave:if(obj == ui->myBtn)ui->myBtn->setIcon(QIcon(":/fly2.png")); // 按钮离开,恢复默认break;case QEvent::MouseButtonPress:if(obj == ui->myBtn)ui->myBtn->setIcon(QIcon(":/fly3.png")); // 按钮按下break;case QEvent::MouseButtonRelease:if(obj == ui->myBtn)ui->myBtn->setIcon(QIcon(":/fly4.png")); // 按钮松开break;default:break;}return QWidget::eventFilter(obj, event);
}

总结

  • 三种方式都能实现一个按钮在悬浮、按下、松开后显示不同的背景图片的效果。
  • 其中第一种方式实现起来最为简单,如果仅仅是按钮外观的切换,采用该方法最为合理,符合MVC设计理念;
  • 第二种方法和第三种方式更具有灵活性,但难度也相对较大,这两种方法常用来实现一些更特殊的按钮操作。

Qt 之按钮鼠标 悬浮、按下、松开后的效果相关推荐

  1. css3探测光圈_CSS3按钮鼠标悬浮实现光圈效果

    这篇文章运用实例代码给大家介绍了利用CSS3如何实现按钮鼠标悬浮光圈效果,有需要的朋友们可以参考学习,下面来一起看看吧. 1 .HTML相关知识点 HTML(超文本标记语言)是网页的核心.首先你要学会 ...

  2. css简单实现鼠标悬浮时图片向上浮动的效果

    文章目录 前言 一.效果图 二.使用步骤 1.HTML代码 2.CSS代码 总结 前言 css简单实现鼠标悬浮时图片向上浮动的效果 一.效果图 二.使用步骤 1.HTML代码 代码如下(示例): &l ...

  3. 网页精美动效/动画制作 按钮鼠标悬浮动效的注意点 02《炫彩网页 iVX 无代码动效/动画制作》

    一.按钮动效的使用 在上一节中,我们创建了一个动效,但是并没有使用,在此我们给按钮设置一个悬浮事件,当鼠标悬浮在按钮之上后就调用该动效,点击按钮添加事件: 点击按钮添加事件后将会出现一个事件编辑框,在 ...

  4. css3探测光圈_CSS3按钮鼠标悬浮光圈效果

    1 .HTML相关知识点 HTML(超文本标记语言)是网页的核心.首先你要学会,不要害怕,HTML很容易学习的,刚开始多记多练,但是到最后还是要自己深入专研,简单的入门是很快,但学好HTML是成为We ...

  5. 鼠标悬浮显示下拉菜单,离开隐藏

    在网页版的csdn中,当用户将鼠标悬浮在头像框上时,会自动显示一个下拉菜单,这篇博客实现的就是这样的功能,但在文章内只记录核心的功能,不对样式做过多修饰 效果如下: 下拉菜单的显示隐藏只需要设置dis ...

  6. css 按空格键对按钮暂停,当按下回车键后,怎么清空回车键的空格,或者模拟发送按键让光标向上?...

    问题:当按下回车键发送信息后,光标会跑到第二行,怎么让光标在按下回车键后回到第一行首? 目前想到的两种方案: 第一:回车后,模拟发送按键,让光标向上 第二:清空输入框的所有html,此方法测试无效 求 ...

  7. 服务器重装系统后桌面只有鼠标,win10系统下更新后桌面黑屏只有鼠标如何解决...

    最近有win10系统用户到本站反馈说碰到这样一个问题,就是在更新win10系统之后,桌面出现黑屏的情况,只有鼠标,碰到这样的情况该怎么处理呢,现在为大家分享一下win7系统下安装魔兽世界lol大脚全英 ...

  8. Qt QPushButton(一) 按钮进入、按下、抬起 背景转换

    Qt pushButton按钮进入.按下.抬起 背景转换 1.如果用ui界面添加的pushButton 按下后 颜色会发生变化 ,可以明显识别是否按下,但是当我修改了背景图:border-image: ...

  9. vue 富文本编辑器 quill (含代码高亮、自定义字体、汉化、鼠标悬浮提示、组件封装等)

    基本使用 安装依赖 npm i quill .vue文件 <div ref="editor" :style="finalStyle"></di ...

最新文章

  1. iOS 二进制流转化-项目笔记
  2. MySQL中的配置参数interactive_timeout和wait_timeout
  3. CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
  4. ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath的区别...
  5. Oracle自动性能统计
  6. AJAX简单使用介绍
  7. docker云计算_为什么Docker成为虚拟化和云计算的新热潮?
  8. Java流程控制03 循环结构 While循环 DoWhile循环 For循环 增强型For循环
  9. Solrj 存储一个point类型的字段
  10. 剑指offer 答案 python_【剑指offer】【python】面试题2~5
  11. 最便宜的那款特斯拉,刚刚喜提“最安全汽车”称号(然后被打脸)
  12. 【编辑器】用CodeRunner打造VScode的C++开发环境
  13. matlab利用图像减法实现找茬
  14. 各种版本的Linux 镜像下载网址
  15. NBU备份Vmware
  16. 传统密码学(三)——转轮密码机
  17. 读书笔记_稻盛和夫《心》
  18. 深度学习 黑白图片 着色
  19. linux/android系统开发,高级adb 命令汇总
  20. 正则表达式测试工具使用说明

热门文章

  1. 副业项目分享,操作简单,兼职赚点零花钱
  2. ubuntu安装SSH的方法
  3. 为什么 HashMap 默认加载因子非得是0.75?
  4. 感恩节祝福html,感恩节祝福短信精选:富含诗意祝福短信
  5. Android移动开发--对图形图像处理的介绍与应用
  6. js 实现 禁用用户浏览器选中,复制,剪切 ,粘贴功能
  7. 测试需求平台3- 登录打通和产品列表功能实现
  8. 马云:现在是创业的最好时机
  9. Seeker的奇妙求职历险(腾讯医疗一面和网易有道一面)
  10. python爬取酒店信息_Python 爬取美團酒店信息