ZIPQT实现图片开关控件-自定义控件 17.76KB

u012959478

资源文件列表:

imageswitch.zip 大约有17个文件
  1. imageswitch/
  2. imageswitch/frmimageswitch.cpp 1.15KB
  3. imageswitch/frmimageswitch.h 394B
  4. imageswitch/frmimageswitch.ui 942B
  5. imageswitch/image/
  6. imageswitch/image/imageswitch/
  7. imageswitch/image/imageswitch/btncheckoff1.png 3.52KB
  8. imageswitch/image/imageswitch/btncheckoff2.png 1.93KB
  9. imageswitch/image/imageswitch/btncheckoff3.png 638B
  10. imageswitch/image/imageswitch/btncheckon1.png 3.14KB
  11. imageswitch/image/imageswitch/btncheckon2.png 2.23KB
  12. imageswitch/image/imageswitch/btncheckon3.png 696B
  13. imageswitch/imageswitch.cpp 2.36KB
  14. imageswitch/imageswitch.h 1.25KB
  15. imageswitch/imageswitch.pro 793B
  16. imageswitch/main.cpp 182B
  17. imageswitch/main.qrc 390B

资源介绍:

在QT中创建一个图片开关控件。该控件允许用户切换显示不同状态的图像,类似于开关的功能。
#include "imageswitch.h" #include <QPainter> ImageSwitch::ImageSwitch(QWidget *parent) : QWidget(parent) { isChecked = false; buttonStyle = ButtonStyle_2; imgOffFile = ":/image/imageswitch/btncheckoff2.png"; imgOnFile = ":/image/imageswitch/btncheckon2.png"; imgFile = imgOffFile; } void ImageSwitch::mousePressEvent(QMouseEvent *) { imgFile = isChecked ? imgOffFile : imgOnFile; isChecked = !isChecked; Q_EMIT checkedChanged(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); } QSize ImageSwitch::sizeHint() const { return QSize(87, 28); } QSize ImageSwitch::minimumSizeHint() const { return QSize(87, 28); } bool ImageSwitch::getChecked() const { return isChecked; } void ImageSwitch::setChecked(bool isChecked) { if (this->isChecked != isChecked) { this->isChecked = isChecked; imgFile = isChecked ? imgOnFile : imgOffFile; this->update(); } } ImageSwitch::ButtonStyle ImageSwitch::getButtonStyle() const { return this->buttonStyle; } void ImageSwitch::setButtonStyle(const ImageSwitch::ButtonStyle &buttonStyle) { if (this->buttonStyle != buttonStyle) { this->buttonStyle = buttonStyle; if (buttonStyle == ButtonStyle_1) { imgOffFile = ":/image/imageswitch/btncheckoff1.png"; imgOnFile = ":/image/imageswitch/btncheckon1.png"; this->resize(87, 28); } else if (buttonStyle == ButtonStyle_2) { imgOffFile = ":/image/imageswitch/btncheckoff2.png"; imgOnFile = ":/image/imageswitch/btncheckon2.png"; this->resize(87, 28); } else if (buttonStyle == ButtonStyle_3) { imgOffFile = ":/image/imageswitch/btncheckoff3.png"; imgOnFile = ":/image/imageswitch/btncheckon3.png"; this->resize(96, 38); } imgFile = isChecked ? imgOnFile : imgOffFile; setChecked(isChecked); this->update(); updateGeometry(); } }
100+评论
captcha
    类型标题大小时间
    ZIPTinUIXml编辑器12.68MB9月前
    ZIP基于TinUI(tkinter)界面的pip可视化管理器11.99MB9月前
    ZIP仿美团外卖小程序源码及程序952.65KB9月前
    ZIP笔者的数字识别模型、树莓派上所需安装的依赖包(包括onnxruntime依赖)以及YOLOv5-lite1.4版本的源码98.67MB9月前
    ZIP使用Java的Swing组件和主流数据库MySQL实现汽车租赁系统,适用于高校学生Java大作业,课设和毕设11.32MB9月前
    ZIPredis-6.0.19.zip2.21MB9月前
    ZIPMATLAB仿真实验 大学离散数学课程实践和课设,多资源整合文件245.79KB9月前
    ZIP高等工程数学习题解答与提示310.26KB9月前