diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 68 |
1 files changed, 59 insertions, 9 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 0c2530e..c126c2c 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -10,15 +10,17 @@ #include <QGraphicsScene> #include <QGraphicsPixmapItem> #include <QImage> +#include <QWheelEvent> #include "pictureviewer2.h" -const QString PictureViewer2::mDefaultFile(":/picgone.png"); - -PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) { +PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mDefaultFile(":/picgone.png") { //behave like QDialog, but don't be one... setWindowFlags(QFlags<Qt::WindowType>(0x1|0x2|0x1000|0x2000|0x10000|0x8000000)); + //initial file list + mFiles = QStringList() << mDefaultFile; + //setup gui mScene = new QGraphicsScene(this); setScene(mScene); @@ -28,10 +30,58 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) setMinimumSize(mMinimunSize); move(50, 50); setVisible(false); - setFile(); + showFile(mFiles.at(mCurPos)); +} + +void PictureViewer2::addFiles(const QStringList &files, bool clear){ + if(clear){ + mFiles.clear(); + mFiles = files; + mCurPos = 0; + return; + } + foreach(const QString &f, files){ + if(!mFiles.contains(f)){ + mFiles.append(f); + } + } } -void PictureViewer2::setFile(const QString file){ +void PictureViewer2::setFile(const QString &file){ + addFiles(QStringList() << file, true); + showFile(mFiles.at(mCurPos)); +} + +QSize PictureViewer2::sizeHint() const{ + return mMinimunSize; +} + +void PictureViewer2::next(){ + if(mCurPos + 1 >= mFiles.size()){ + return; + } + ++mCurPos; + showFile(mFiles.at(mCurPos)); +} + +void PictureViewer2::previous(){ + if(mCurPos - 1 < 0){ + return; + } + --mCurPos; + showFile(mFiles.at(mCurPos)); +} + +void PictureViewer2::wheelEvent(QWheelEvent *event){ + int steps = event->delta() / 8 / 15; + if(steps < 0){ + next(); + }else{ + previous(); + } +} + +void PictureViewer2::showFile(const QString file){ QPixmap pixmap(file); if(pixmap.isNull()){ return; @@ -45,9 +95,13 @@ void PictureViewer2::setFile(const QString file){ mCur = 0; } mCur = new QGraphicsPixmapItem(pixmap); + float cX = width() - pixmap.width() / 2; + float cY = height() - pixmap.height() / 2; + mCur->setPos(QPointF(cX, cY)); mScene->addItem(mCur); } + void PictureViewer2::setCurPalette(const QPixmap &pic){ QPoint val1 = QPoint(qrand() % pic.width(), qrand() % pic.height()); QPoint val2 = QPoint(qrand() % pic.width(), qrand() % pic.height()); @@ -59,7 +113,3 @@ void PictureViewer2::setCurPalette(const QPixmap &pic){ g.setColorAt(1, c2); setBackgroundBrush(QBrush(g)); } - -QSize PictureViewer2::sizeHint() const{ - return mMinimunSize; -} |