Qt 之按钮鼠标 悬浮、按下、松开后的效果
文章目录
- 简介
- 方式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 之按钮鼠标 悬浮、按下、松开后的效果相关推荐
- css3探测光圈_CSS3按钮鼠标悬浮实现光圈效果
这篇文章运用实例代码给大家介绍了利用CSS3如何实现按钮鼠标悬浮光圈效果,有需要的朋友们可以参考学习,下面来一起看看吧. 1 .HTML相关知识点 HTML(超文本标记语言)是网页的核心.首先你要学会 ...
- css简单实现鼠标悬浮时图片向上浮动的效果
文章目录 前言 一.效果图 二.使用步骤 1.HTML代码 2.CSS代码 总结 前言 css简单实现鼠标悬浮时图片向上浮动的效果 一.效果图 二.使用步骤 1.HTML代码 代码如下(示例): &l ...
- 网页精美动效/动画制作 按钮鼠标悬浮动效的注意点 02《炫彩网页 iVX 无代码动效/动画制作》
一.按钮动效的使用 在上一节中,我们创建了一个动效,但是并没有使用,在此我们给按钮设置一个悬浮事件,当鼠标悬浮在按钮之上后就调用该动效,点击按钮添加事件: 点击按钮添加事件后将会出现一个事件编辑框,在 ...
- css3探测光圈_CSS3按钮鼠标悬浮光圈效果
1 .HTML相关知识点 HTML(超文本标记语言)是网页的核心.首先你要学会,不要害怕,HTML很容易学习的,刚开始多记多练,但是到最后还是要自己深入专研,简单的入门是很快,但学好HTML是成为We ...
- 鼠标悬浮显示下拉菜单,离开隐藏
在网页版的csdn中,当用户将鼠标悬浮在头像框上时,会自动显示一个下拉菜单,这篇博客实现的就是这样的功能,但在文章内只记录核心的功能,不对样式做过多修饰 效果如下: 下拉菜单的显示隐藏只需要设置dis ...
- css 按空格键对按钮暂停,当按下回车键后,怎么清空回车键的空格,或者模拟发送按键让光标向上?...
问题:当按下回车键发送信息后,光标会跑到第二行,怎么让光标在按下回车键后回到第一行首? 目前想到的两种方案: 第一:回车后,模拟发送按键,让光标向上 第二:清空输入框的所有html,此方法测试无效 求 ...
- 服务器重装系统后桌面只有鼠标,win10系统下更新后桌面黑屏只有鼠标如何解决...
最近有win10系统用户到本站反馈说碰到这样一个问题,就是在更新win10系统之后,桌面出现黑屏的情况,只有鼠标,碰到这样的情况该怎么处理呢,现在为大家分享一下win7系统下安装魔兽世界lol大脚全英 ...
- Qt QPushButton(一) 按钮进入、按下、抬起 背景转换
Qt pushButton按钮进入.按下.抬起 背景转换 1.如果用ui界面添加的pushButton 按下后 颜色会发生变化 ,可以明显识别是否按下,但是当我修改了背景图:border-image: ...
- vue 富文本编辑器 quill (含代码高亮、自定义字体、汉化、鼠标悬浮提示、组件封装等)
基本使用 安装依赖 npm i quill .vue文件 <div ref="editor" :style="finalStyle"></di ...
最新文章
- iOS 二进制流转化-项目笔记
- MySQL中的配置参数interactive_timeout和wait_timeout
- CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath的区别...
- Oracle自动性能统计
- AJAX简单使用介绍
- docker云计算_为什么Docker成为虚拟化和云计算的新热潮?
- Java流程控制03 循环结构 While循环 DoWhile循环 For循环 增强型For循环
- Solrj 存储一个point类型的字段
- 剑指offer 答案 python_【剑指offer】【python】面试题2~5
- 最便宜的那款特斯拉,刚刚喜提“最安全汽车”称号(然后被打脸)
- 【编辑器】用CodeRunner打造VScode的C++开发环境
- matlab利用图像减法实现找茬
- 各种版本的Linux 镜像下载网址
- NBU备份Vmware
- 传统密码学(三)——转轮密码机
- 读书笔记_稻盛和夫《心》
- 深度学习 黑白图片 着色
- linux/android系统开发,高级adb 命令汇总
- 正则表达式测试工具使用说明