From 9eedf8c619c15302d080ee55b513e07a2bf5d591 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 27 Aug 2015 05:33:49 +0200 Subject: Display control items Draw control items in PictureViewer2 at the right centered on the y- axis. --- pictureviewer2.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 4 deletions(-) (limited to 'pictureviewer2.cpp') diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 71f4a80..b18f9ed 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -9,6 +9,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -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()); -- cgit v1.2.3-70-g09d2