1 #include "imagewidget.h"
2 #include <QCoreApplication>
3 #include <QDir>
4 #include <QTimer>
5 #include <QPainter>
6 #include <QCoreApplication>
7
8 class ImageWidgetPrivate{
9 public:
10 int index=0;
11 QList<QString> images;
12 QTimer *timer;
13 bool pause =false;
14
15 void setImage();
16 };
17
setImage()18 void ImageWidgetPrivate::setImage()
19 {
20 index++;
21 if(index >= images.size())
22 {
23 index=0;
24 }
25 }
26
27
ImageWidget(QWidget * parent)28 ImageWidget::ImageWidget(QWidget *parent) : IWidget(parent),m_d(new ImageWidgetPrivate )
29 {
30 QString path = qApp->applicationDirPath()+"/image/";
31 QDir dir(path);
32 QFileInfoList infoList = dir.entryInfoList(QStringList()<<"*.png"<< "*.bmp"<< "*.jpg", QDir::Files);
33 foreach (QFileInfo info, infoList) {
34 m_d->images<< info.absoluteFilePath();
35 qDebug()<< info.absoluteFilePath();
36 }
37 m_d->timer = new QTimer(this);
38 connect(m_d->timer, &QTimer::timeout, [=](){
39 if(!m_d->pause)
40 m_d->setImage();
41 update();
42 });
43
44 if(m_d->images.size() > 0)
45 {
46 m_d->timer->start(1000);
47 }
48 }
49
~ImageWidget()50 ImageWidget::~ImageWidget()
51 {
52 delete m_d;
53 }
54
id()55 QString ImageWidget::id()
56 {
57 return "image";
58 }
59
paintEvent(QPaintEvent * event)60 void ImageWidget::paintEvent(QPaintEvent *event)
61 {
62 QWidget::paintEvent(event);
63 if(m_d->images.size() > 0 )
64 {
65 QPainter painter(this);
66 QString fileName = m_d->images[m_d->index];
67 QPixmap pixmap(fileName);
68 pixmap =pixmap.scaled(this->width(), this->height(), Qt::KeepAspectRatio);
69 int x = (width()-pixmap.width())/2;
70 int y = (height()-pixmap.height())/2;
71 painter.drawPixmap(x, y , pixmap);
72 }
73
74 QWidget::paintEvent(event);
75 }
76
mousePressEvent(QMouseEvent * event)77 void ImageWidget::mousePressEvent(QMouseEvent *event)
78 {
79 Q_UNUSED(event)
80 m_d->pause = !m_d->pause;
81 }
82
mouseDoubleClickEvent(QMouseEvent * event)83 void ImageWidget::mouseDoubleClickEvent(QMouseEvent *event)
84 {
85 Q_UNUSED(event)
86 qApp->quit();
87 }
88
showEvent(QShowEvent * event)89 void ImageWidget::showEvent(QShowEvent *event)
90 {
91 Q_UNUSED(event)
92 QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, false));
93 }
94
hideEvent(QHideEvent * event)95 void ImageWidget::hideEvent(QHideEvent *event)
96 {
97 Q_UNUSED(event)
98 QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, true));
99 }
100