首页下载资源移动开发QT实现图片开关控件-自定义控件

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

u01295947817.76KB需要积分:1

资源文件列表:

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 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