Qt5开发从入门到精通——第七篇二节( 图形视图——QSlider类)

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类会在应用程序开发中经常用到的

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东.'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值