From 949de87e2556239f1a6399a5df67f2296ff1788a Mon Sep 17 00:00:00 2001 From: johanneshilden Date: Tue, 22 Mar 2016 11:19:30 +0300 Subject: [PATCH] refactor ExampleView class --- examples/exampleview.cpp | 28 +++++++++++++++++++++++++--- examples/exampleview.h | 12 ++++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/examples/exampleview.cpp b/examples/exampleview.cpp index b6f01f4..aff551a 100644 --- a/examples/exampleview.cpp +++ b/examples/exampleview.cpp @@ -1,13 +1,35 @@ +#include +#include #include "exampleview.h" ExampleView::ExampleView(QWidget *parent) - : QGraphicsView(parent) + : QScrollArea(parent), + _widget(0) { - QGraphicsScene *scene = new QGraphicsScene(this); - setScene(scene); } ExampleView::~ExampleView() { } +void ExampleView::setWidget(QWidget *widget) +{ + if (_widget) + _widget->removeEventFilter(this); + + widget->setParent(this); + widget->installEventFilter(this); + _widget = widget; +} + +bool ExampleView::eventFilter(QObject *obj, QEvent *event) +{ + QEvent::Type type = event->type(); + if (QEvent::Resize == type || QEvent::Move == type) { + QRect r(_widget->geometry()); + qDebug() << r; + r.moveCenter(rect().center()); + _widget->setGeometry(r); + } + return QScrollArea::eventFilter(obj, event); +} diff --git a/examples/exampleview.h b/examples/exampleview.h index 58d9d22..1a7884c 100644 --- a/examples/exampleview.h +++ b/examples/exampleview.h @@ -1,15 +1,23 @@ #ifndef EXAMPLEVIEW_H #define EXAMPLEVIEW_H -#include +#include -class ExampleView : public QGraphicsView +class ExampleView : public QScrollArea { Q_OBJECT public: explicit ExampleView(QWidget *parent = 0); ~ExampleView(); + + void setWidget(QWidget *widget); + +protected: + bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; + +private: + QWidget *_widget; }; #endif // EXAMPLEVIEW_H