diff options
author | Arno <arno@disconnect.de> | 2015-08-27 03:03:58 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2015-08-27 03:03:58 +0200 |
commit | 230d609d3bc85e49b6743ee06f59cb7c3d636714 (patch) | |
tree | 7bde8cb6263e780dd5b73a14bfca7d6e8edf4190 | |
parent | b12a9282cd236e5ecab8fda57cec379624457650 (diff) | |
download | SheMov-230d609d3bc85e49b6743ee06f59cb7c3d636714.tar.gz SheMov-230d609d3bc85e49b6743ee06f59cb7c3d636714.tar.bz2 SheMov-230d609d3bc85e49b6743ee06f59cb7c3d636714.zip |
Create dummy BoundingRectItem for controls
Draw a dummy rounded rectangle on the bottom left for control items.
-rw-r--r-- | pictureviewer2.cpp | 24 | ||||
-rw-r--r-- | 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 <QStaticText> 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) {} |