功能介绍
- 支持鼠标滚轮放大缩小
- 支持定时自动播放
- 支持下一张或下一张图片
说明:功能比较简单(大牛勿喷),就是封装了一层。基本上没有代码的注释,如果大概意思不懂,那么就是笔者写代码的功底不够。
所需知识
- 定时器(QTimer)
- 滚轮事件(QWheelEvent)
- 容器(QVector)
- 链表(QVector实现循环链表)
代码展示
//pictureviewwidget.h
#ifndef PICTUREVIEWWIDGET_H
#define PICTUREVIEWWIDGET_H
#include <QWidget>
#include <QVector>
#include <QPixmap>
class QPushButton;
class QLabel;
class QTimer;
class PictureViewWidget : public QWidget
{
Q_OBJECT
public:
PictureViewWidget(QVector<QPixmap *> &pictures);
private:
void setupUI();
// (width, height) = (800 * scale, 600 * scale)
void showPicture(float scale = 1.0);
private slots:
void nextPicture();
void prevPicture();
// Play images, and interval is 2s
void playPictures();
// Reimplement the wheelEvent() to achieve
// zoom in and zoom out
void wheelEvent(QWheelEvent * event);
private:
QVector<QPixmap *> &pictures_;
QLabel *pictureLabel;
QPushButton *prevButton;
QPushButton *nextButton;
QPushButton *playButton;
bool isPlaying; // Status of playing pictures
QTimer *timer; // Auto play with specific interval
int currentIndex; // Index of current picture
int size;