千家信息网

Qt图片开关控件怎么实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Qt图片开关控件怎么实现",在日常操作中,相信很多人在Qt图片开关控件怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt图片开关控件怎么实现"
千家信息网最后更新 2026年11月03日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安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 互联网科技会 互联网科技与金融科技 艾特科技互联网 小马过河互联网科技 新浪科技互联网 华脉科技工业互联网产品 中国互联网有什么科技含量 成都互联网科技公司100强 重庆威客帮互联网科技 企晟互联网信息科技有限公司 华中科技大学互联网的牛人 黑科技 体验场景 互联网大会 中国互联网有什么科技 下一代互联网重大应用科技园 半导体行业属于互联网高科技类吗 抖集互联网科技技术咨询 中国新注册互联网科技 陕西彩京云互联网科技有限公司 北京瑞云互联网科技有限公司 花魁咖啡 科技信息互联网 深圳互联网络科技有限公司 碳银互联网科技有限公司 中盈科技互联网信息有限公司 欧洲十大科技互联网公司 内蒙古九一互联网科技 上海京穆互联网科技有限公司 易租星互联网科技有限公司 北京军民互联网科技公司
0