From 230d609d3bc85e49b6743ee06f59cb7c3d636714 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 27 Aug 2015 03:03:58 +0200 Subject: Create dummy BoundingRectItem for controls Draw a dummy rounded rectangle on the bottom left for control items. --- pictureviewer2.cpp | 24 +++++++++++++++++++++++- pictureviewer2.h | 16 +++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index f57cab6..71f4a80 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -74,6 +74,8 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) readSettings(); setMinimumSize(QSize(800, 600)); showFile(mFiles.at(mCurPos)); + mBoundingRectItem = new BoundingRectItem(QSize(100, 300)); + mScene->addItem(mBoundingRectItem); } void PictureViewer2::addFiles(const PicDataList &files, bool clear){ @@ -453,6 +455,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); showFile(mCurPicData); } @@ -651,7 +655,7 @@ void PictureViewer2::treeToStringRecursive(const SmTreeItem *parent, QTextCursor } } -QPointF PictureViewer2::getPos(PictureViewer2Item *item, int pos, const QPointF &movPos){ +QPointF PictureViewer2::getPos(QGraphicsItem *item, int pos, const QPointF &movPos){ QSizeF curSize = size(); item->setFlags(0); if(pos == ConfigurationDialog::TopLeft){ @@ -744,6 +748,24 @@ void PictureViewer2Item::paint(QPainter *painter, const QStyleOptionGraphicsItem painter->restore(); } +QRectF BoundingRectItem::boundingRect() const { + return QRectF(0, 0, mSize.width(), mSize.height()); +} + +void BoundingRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ + Q_UNUSED(option); + Q_UNUSED(widget); + painter->save(); + painter->setRenderHint(QPainter::Antialiasing, true); + painter->setRenderHint(QPainter::TextAntialiasing, true); + QColor bgColor = QColor(Qt::white); + bgColor.setAlpha(80); + QBrush brush(bgColor); + painter->setPen(QColor(Qt::yellow)); + painter->setBrush(brush); + painter->drawRoundedRect(boundingRect(), 15.0, 15.0); +} + void PictureViewerGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *e){ QGraphicsScene::mousePressEvent(e); QGraphicsItem *item = itemAt(e->scenePos(), QTransform()); diff --git a/pictureviewer2.h b/pictureviewer2.h index 5b78982..6ebcdd8 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -15,6 +15,7 @@ #include class PictureViewerGraphicsScene; +class BoundingRectItem; class QGraphicsPixmapItem; class QWheelEvent; class QContextMenuEvent; @@ -91,7 +92,7 @@ class PictureViewer2 : public QGraphicsView { void setNextBatch(); QTextDocument *treeToString(const SmTreeItem *root) const; void treeToStringRecursive(const SmTreeItem *parent, QTextCursor *cursor, int indent) const; - QPointF getPos(PictureViewer2Item *item, int pos, const QPointF &movPos); + QPointF getPos(QGraphicsItem *item, int pos, const QPointF &movPos); QString constructWindowTitle() const; PicDataList mFiles; PicDataList mMarkedFiles; @@ -107,10 +108,12 @@ class PictureViewer2 : public QGraphicsView { const static QString mDefaultFile; PictureViewer2Item *mFnItem; PictureViewer2Item *mMappingItem; + BoundingRectItem *mBoundingRectItem; bool mUseGradient; QColor mBgColor; QPointF mInfoPos; QPointF mMappingPos; + QPointF mBoundingPos; QAction *mSlideA; QAction *mToggleSlideA; QAction *mSlideAllA; @@ -143,6 +146,17 @@ class PictureViewer2Item : public QGraphicsItem { QTextDocument *mDoc; }; +class BoundingRectItem : public QGraphicsItem { + public: + explicit BoundingRectItem(const QSize &size, QGraphicsItem *parent = 0) : QGraphicsItem(parent), mSize(size) {} + QRectF boundingRect() const; + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + + private: + QSize mSize; + +}; + class PictureViewerGraphicsScene : public QGraphicsScene { public: explicit PictureViewerGraphicsScene(QObject *parent = 0) : QGraphicsScene(parent) {} -- cgit v1.2.3-70-g09d2