diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 3bcc404..1b797d3 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -11,6 +11,9 @@ #include <QGraphicsPixmapItem> #include <QImage> #include <QWheelEvent> +#include <QContextMenuEvent> +#include <QMenu> +#include <QTimer> #include "pictureviewer2.h" #include "pictureswidget.h" @@ -27,6 +30,10 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) initialData[PicFilesModel::FullPath] = mDefaultFile; mFiles << initialData; + //picture show + mSlideTimer = new QTimer(this); + connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next())); + //setup gui mScene = new QGraphicsScene(this); setScene(mScene); @@ -64,20 +71,30 @@ QSize PictureViewer2::sizeHint() const{ void PictureViewer2::next(){ if(mCurPos + 1 >= mFiles.size()){ - return; + mCurPos = 0; + }else{ + ++mCurPos; } - ++mCurPos; showFile(mFiles.at(mCurPos)); } void PictureViewer2::previous(){ if(mCurPos - 1 < 0){ - return; + mCurPos = mFiles.size() - 1; + }else{ + --mCurPos; } - --mCurPos; showFile(mFiles.at(mCurPos)); } +void PictureViewer2::slide(){ + if(mSlideTimer->isActive()){ + mSlideTimer->stop(); + }else{ + mSlideTimer->start(5000); + } +} + void PictureViewer2::wheelEvent(QWheelEvent *event){ int steps = event->delta() / 8 / 15; if(steps < 0){ @@ -87,6 +104,14 @@ void PictureViewer2::wheelEvent(QWheelEvent *event){ } } +void PictureViewer2::contextMenuEvent(QContextMenuEvent *e){ + QMenu ctxMenu; + foreach(QAction *a, actions()){ + ctxMenu.addAction(a); + } + ctxMenu.exec(e->globalPos()); +} + void PictureViewer2::showFile(const PicData &file){ QPixmap pixmap(file.at(PicFilesModel::FullPath).toString()); if(pixmap.isNull()){ |