#include "imagewidget.h" #include #include #include #include #include class ImageWidgetPrivate{ public: int index=0; QList images; QTimer *timer; bool pause =false; void setImage(); }; void ImageWidgetPrivate::setImage() { index++; if(index >= images.size()) { index=0; } } ImageWidget::ImageWidget(QWidget *parent) : IWidget(parent),m_d(new ImageWidgetPrivate ) { QString path = qApp->applicationDirPath()+"/image/"; QDir dir(path); QFileInfoList infoList = dir.entryInfoList(QStringList()<<"*.png"<< "*.bmp"<< "*.jpg", QDir::Files); foreach (QFileInfo info, infoList) { m_d->images<< info.absoluteFilePath(); qDebug()<< info.absoluteFilePath(); } m_d->timer = new QTimer(this); connect(m_d->timer, &QTimer::timeout, [=](){ if(!m_d->pause) m_d->setImage(); update(); }); if(m_d->images.size() > 0) { m_d->timer->start(1000); } } ImageWidget::~ImageWidget() { delete m_d; } QString ImageWidget::id() { return "image"; } void ImageWidget::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); if(m_d->images.size() > 0 ) { QPainter painter(this); QString fileName = m_d->images[m_d->index]; QPixmap pixmap(fileName); pixmap =pixmap.scaled(this->width(), this->height(), Qt::KeepAspectRatio); int x = (width()-pixmap.width())/2; int y = (height()-pixmap.height())/2; painter.drawPixmap(x, y , pixmap); } QWidget::paintEvent(event); } void ImageWidget::mousePressEvent(QMouseEvent *event) { Q_UNUSED(event) m_d->pause = !m_d->pause; } void ImageWidget::mouseDoubleClickEvent(QMouseEvent *event) { Q_UNUSED(event) qApp->quit(); } void ImageWidget::showEvent(QShowEvent *event) { Q_UNUSED(event) QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, false)); } void ImageWidget::hideEvent(QHideEvent *event) { Q_UNUSED(event) QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, true)); }