Qt图片开关控件怎么实现
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要介绍"Qt图片开关控件怎么实现",在日常操作中,相信很多人在Qt图片开关控件怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt图片开关控件怎么实现"
千家信息网最后更新 2025年02月06日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安全错误
数据库的锁怎样保障安全
数据库0ra01033
网络技术员有出路吗
WIN7安装数据库流程
国家网络安全应遵循的方针是
网络安全教育警钟长鸣
逐浪服务器远程管理
许可证服务器关机或未响应
海关系统用哪个软件开发
丧尸围城4游戏服务器好吗
数据库查询表索引语法
未来5年必备十大网络技术
安全与网络安全
网络技术 期刊
电子资源中文数据库
网络安全法 59条
jtable连接到数据库
如何远程连接数据库
音乐会网络安全管理中心
网络安全数据管理条例解读
七日杀服务器给别人管理
郑州软件开发机构
单位网络安全搭建
密码编码学与网络安全 附录
如何让网络安全模式有声音
服务器安全事件4624
计算机网络安全的任务
软件开发-查询一体机
中国无线网络技术发展现状
分布式超算服务器
软件开发员工作权利