CSDN话题挑战赛第2期
参赛话题:Qt应用程序开发
欢迎小伙伴的点评✨✨,相互学习、互关必回、全天在线???
博主?? 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神??
前言
本章将会给大家带来QSlider类的使用详细实例解析
一、QSlider类的简介
QSlider是滑动条控件,最常见的应用就是视频播放器中的进度条。QSlider允许用户通过鼠标进行拖动、点击(需要重写mousePressEvent事件实现),本章将通过实例介绍如何应用。
二、效果展示
图一
添加图片到Resources中步骤如下:
图二
图三
三、原码解析
mapwidget.h
#ifndef MAPWIDGET_H
#define MAPWIDGET_H
#include <QGraphicsView>
#include <QLabel>
#include <QMouseEvent>
#include <QDebug>
#include <QSlider>
#include <QImage>
class MapWidget : public QGraphicsView
{
Q_OBJECT
public:
MapWidget();
public slots:
void slotZoom(int);
protected:
QImage pixmapScale(const QImage& image, const double & index);
private:
QImage *img;
qreal zoom;
QSlider *slider; //声明全局变量
QLabel *zoominLabel;
};
#endif // MAPWIDGET_H
main.cpp
#include "MapWidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font("ARPL KaitiM GB",12);
font.setBold(true);
a.setFont(font);
MapWidget mapWidget;
mapWidget.show();
return a.exec();
}
mapwidget.cpp
#include "mapwidget.h"
#include "mapwidget.h"
#include <QSlider>
#include <QGridLayout>
#include <QFile>
#include <QTextStream>
#include <QGraphicsScene>
#include <math.h>
#include <QPixmap>
MapWidget::MapWidget()
{
zoom=50;
img = new QImage;
slider = new QSlider;
slider->setOrientation (Qt::Horizontal); //设置水平Horizontal 设置垂直Vertical
slider->setRange(1,100); //设置最小值和最大值
slider->setTickInterval(10);
slider->setValue(50); //设置当前值
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(slotZoom (int)));
zoominLabel = new QLabel;
if(img->load(":/src/eagle.png"))
{
//在 imageLabel 对象中放置图片
this->zoominLabel->setPixmap(QPixmap::fromImage(*img));
}
QVBoxLayout *zoomLayout = new QVBoxLayout; //对控件进行布局
zoomLayout->addWidget(zoominLabel);
zoomLayout->addWidget(slider);
setLayout(zoomLayout);
setWindowTitle("Map Widget");
}
void MapWidget::slotZoom(int value) //地图缩放
{
if(value>zoom) //放大
{
*img = pixmapScale(*img, 1.1);
this->zoominLabel->setPixmap(QPixmap::fromImage(*img));
}else
{ //放大
*img = pixmapScale(*img, 0.9);
this->zoominLabel->setPixmap(QPixmap::fromImage(*img));
}
zoom= value;
}
/*设置改变图片大小的函数*/
QImage MapWidget::pixmapScale(const QImage& image, const double & index)
{
QImage r_image;
r_image = image.scaled(image.width()*index,image.height()*index, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
return r_image;
}
四、总结
QSlider类会在应用程序开发中经常用到的
版权声明:本文为weixin_44759598原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。