Qt图片开关控件怎么实现
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,这篇文章主要介绍"Qt图片开关控件怎么实现",在日常操作中,相信很多人在Qt图片开关控件怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt图片开关控件怎么实现"
千家信息网最后更新 2024年11月28日Qt图片开关控件怎么实现
这篇文章主要介绍"Qt图片开关控件怎么实现",在日常操作中,相信很多人在Qt图片开关控件怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt图片开关控件怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、前言
进入智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在WINFORM项目上,如果将CheckBox也改为开关按钮,估计也会为项目增添不少新鲜感。 沿袭之前的做法,本人还是喜欢直接PS好图片后,用drawimage方法将图片绘制到用户控件上,启用双缓冲和背景透明,有些人说PS一张精美的图片也不是很容易,需要专业的,这里提供一个好方法,让你也可以获取到这些图片,其实大部分的APP都可以用解压软件打开,拓展名改为.zip即可,解压出来一般里面都含有绝大部分的图片,发现绝大部分的APP都喜欢用图片作为背景来展示一些效果,而不是原原本本的用代码一点点绘制。腾讯就是腾讯啊,大公司!人家的美工MM设计的图片那真的没得话说,绝对一流,手机QQ每次升级一个版本,都会下过来将里面的精美图片图标之类的提取出来,以便项目使用,这不会算是盗版吧!
二、代码思路
ImageSwitch::ImageSwitch(QWidget *parent) : QWidget(parent){ isChecked = false; buttonStyle = ButtonStyle_2; imgOffFile = ":/image/btncheckoff2.png"; imgOnFile = ":/image/btncheckon2.png"; imgFile = imgOffFile;}void ImageSwitch::mousePressEvent(QMouseEvent *){ imgFile = isChecked ? imgOffFile : imgOnFile; isChecked = !isChecked; this->update();}void ImageSwitch::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setRenderHints(QPainter::SmoothPixmapTransform); QImage img(imgFile); img = img.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); //按照比例自动居中绘制 int pixX = rect().center().x() - img.width() / 2; int pixY = rect().center().y() - img.height() / 2; QPoint point(pixX, pixY); painter.drawImage(point, img);}bool ImageSwitch::getChecked() const{ return isChecked;}ImageSwitch::ButtonStyle ImageSwitch::getButtonStyle() const{ return this->buttonStyle;}QSize ImageSwitch::sizeHint() const{ return QSize(87, 28);}QSize ImageSwitch::minimumSizeHint() const{ return QSize(87, 28);}void ImageSwitch::setChecked(bool isChecked){ if (this->isChecked != isChecked) { this->isChecked = isChecked; imgFile = isChecked ? imgOnFile : imgOffFile; this->update(); }}void ImageSwitch::setButtonStyle(const ImageSwitch::ButtonStyle &buttonStyle){ if (this->buttonStyle != buttonStyle) { this->buttonStyle = buttonStyle; if (buttonStyle == ButtonStyle_1) { imgOffFile = ":/image/btncheckoff1.png"; imgOnFile = ":/image/btncheckon1.png"; this->resize(87, 28); } else if (buttonStyle == ButtonStyle_2) { imgOffFile = ":/image/btncheckoff2.png"; imgOnFile = ":/image/btncheckon2.png"; this->resize(87, 28); } else if (buttonStyle == ButtonStyle_3) { imgOffFile = ":/image/btncheckoff3.png"; imgOnFile = ":/image/btncheckon3.png"; this->resize(96, 38); } imgFile = isChecked ? imgOnFile : imgOffFile; setChecked(isChecked); this->update(); updateGeometry(); }}
三、效果图
到此,关于"Qt图片开关控件怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
图片
控件
手机
学习
方法
项目
精美
代码
按钮
效果
更多
背景
部分
腾讯
帮助
实用
新鲜
原原本本
大行其道
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库连接使用方式
华为2288hv5服务器功率
机器视觉与软件开发
双路服务器主板能用普通电源吗
java网络安全问题
通过域名访问sql数据库
关于网络安全主题的演讲稿
数据库同步到另一个数据库不更新
思科网络技术是干什么用的
应当立即启动网络安全应急预案
阿塞拜疆与网络安全
开电子油票提示访问服务器异常
徐州秀英英网络技术有限公司
网络安全员演示支付宝被修改
北京智能软件开发价格如何计算
计算机网络安全防护及方法
网络安全宣传周报的作品标题
车联网网络安全可有可无
期刊收录数据库有哪些
便携式录播一体机属于服务器范围
rds关系型数据库
导航通信与网络技术
博朗软件开发
数据库 where语句
数据库设计节点之间关系
公开课软件开发与技术
视频平台服务器硬盘
军营网络安全宣传标题
数据库设计系列
信阳网络技术培训班