diff options
author | Arno <arno@disconnect.de> | 2015-08-27 05:33:49 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2015-08-27 05:33:49 +0200 |
commit | 9eedf8c619c15302d080ee55b513e07a2bf5d591 (patch) | |
tree | 9faa533c1d0d73c075b4f6c2123b4ce527db4a62 | |
parent | 230d609d3bc85e49b6743ee06f59cb7c3d636714 (diff) | |
download | SheMov-9eedf8c619c15302d080ee55b513e07a2bf5d591.tar.gz SheMov-9eedf8c619c15302d080ee55b513e07a2bf5d591.tar.bz2 SheMov-9eedf8c619c15302d080ee55b513e07a2bf5d591.zip |
Display control items
Draw control items in PictureViewer2 at the right centered on the y-
axis.
-rw-r--r-- | pictureviewer2.cpp | 62 | ||||
-rw-r--r-- | pictureviewer2.h | 10 |
2 files changed, 67 insertions, 5 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 71f4a80..b18f9ed 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -9,6 +9,9 @@ #include <QApplication> #include <QGraphicsScene> #include <QGraphicsPixmapItem> +#include <QGraphicsTextItem> +#include <QGraphicsLineItem> +#include <QFontMetrics> #include <QImage> #include <QWheelEvent> #include <QContextMenuEvent> @@ -73,9 +76,9 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) setScene(mScene); readSettings(); setMinimumSize(QSize(800, 600)); + constructControlItem(); showFile(mFiles.at(mCurPos)); - mBoundingRectItem = new BoundingRectItem(QSize(100, 300)); - mScene->addItem(mBoundingRectItem); + } void PictureViewer2::addFiles(const PicDataList &files, bool clear){ @@ -455,8 +458,8 @@ void PictureViewer2::hideEvent(QHideEvent *e){ void PictureViewer2::resizeEvent(QResizeEvent *event){ QGraphicsView::resizeEvent(event); - int brposy = event->size().height() - mBoundingRectItem->boundingRect().size().height() - 5; - mBoundingRectItem->setPos(5, brposy); + qreal ypos = event->size().height() / 2 - mBoundingRectItem->boundingRect().size().height() / 2; + mBoundingRectItem->setPos(width() - 15 - mBoundingRectItem->boundingRect().size().width(), ypos); showFile(mCurPicData); } @@ -601,6 +604,57 @@ void PictureViewer2::nextFromAll(){ ++mCurPos; } +void PictureViewer2::constructControlItem(){ + QStringList controls = QStringList() << "Next (>)" << "Previous (<)" << "Skip forward (>>)" << "Skip back (<<)" << "Stop Slide" << "Slide" << "Slide all"; + QFont f = QFont(); + f.setPointSize(14); + f.setBold(true); + QFontMetrics fm(f); + int width = 0; + foreach(QString c, controls){ + int curWidth = fm.width(c); + if(curWidth > width){ + width = curWidth; + } + } + f.setBold(true); + mBoundingRectItem = new BoundingRectItem(QSize(width + 10, 16 * (controls.count() + 3))); + mBoundingRectItem->setZValue(5); + mScene->addItem(mBoundingRectItem); + mNextC = new QGraphicsTextItem(mBoundingRectItem); + mNextC->setFont(f); + mNextC->setPlainText(controls.at(0)); + mPreviousC = new QGraphicsTextItem(mBoundingRectItem); + mPreviousC->setFont(f); + mPreviousC->setPlainText(controls.at(1)); + mPreviousC->moveBy(0, 16); + QGraphicsLineItem *l1 = new QGraphicsLineItem(mBoundingRectItem); + l1->setLine(QLine(QPoint(5, 48), QPoint(width, 48))); + mSkipForwardC = new QGraphicsTextItem(mBoundingRectItem); + mSkipForwardC->setFont(f); + mSkipForwardC->setPlainText(controls.at(2)); + mSkipForwardC->moveBy(0, 48); + mSkipBackwardC = new QGraphicsTextItem(mBoundingRectItem); + mSkipBackwardC->setFont(f); + mSkipBackwardC->setPlainText(controls.at(3)); + mSkipBackwardC->moveBy(0, 64); + QGraphicsLineItem *l2 = new QGraphicsLineItem(mBoundingRectItem); + l2->setLine(QLine(QPoint(5, 96), QPoint(width, 96))); + mSlideStopC = new QGraphicsTextItem(mBoundingRectItem); + mSlideStopC->setFont(f); + mSlideStopC->setPlainText(controls.at(4)); + mSlideStopC->setDefaultTextColor(Qt::darkGreen); + mSlideStopC->moveBy(0, 96); + mSlideC = new QGraphicsTextItem(mBoundingRectItem); + mSlideC->setFont(f); + mSlideC->setPlainText(controls.at(5)); + mSlideC->moveBy(0, 112); + mSlideAllC = new QGraphicsTextItem(mBoundingRectItem); + mSlideAllC->setFont(f); + mSlideAllC->setPlainText(controls.at(5)); + mSlideAllC->moveBy(0, 128); +} + void PictureViewer2::setGradient(const QPixmap &pic){ QPoint val1 = QPoint(qrand() % pic.width(), qrand() % pic.height()); QPoint val2 = QPoint(qrand() % pic.width(), qrand() % pic.height()); diff --git a/pictureviewer2.h b/pictureviewer2.h index 6ebcdd8..a3f1f2d 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -16,6 +16,7 @@ class PictureViewerGraphicsScene; class BoundingRectItem; +class QGraphicsTextItem; class QGraphicsPixmapItem; class QWheelEvent; class QContextMenuEvent; @@ -87,7 +88,7 @@ class PictureViewer2 : public QGraphicsView { void nextFromAll(); private: - void setupDialog(); + void constructControlItem(); void setGradient(const QPixmap &pic); void setNextBatch(); QTextDocument *treeToString(const SmTreeItem *root) const; @@ -109,6 +110,13 @@ class PictureViewer2 : public QGraphicsView { PictureViewer2Item *mFnItem; PictureViewer2Item *mMappingItem; BoundingRectItem *mBoundingRectItem; + QGraphicsTextItem *mNextC; + QGraphicsTextItem *mPreviousC; + QGraphicsTextItem *mSkipForwardC; + QGraphicsTextItem *mSkipBackwardC; + QGraphicsTextItem *mSlideStopC; + QGraphicsTextItem *mSlideC; + QGraphicsTextItem *mSlideAllC; bool mUseGradient; QColor mBgColor; QPointF mInfoPos; |