diff --git a/examples/exampleview.cpp b/examples/exampleview.cpp index 60a614c..95ac973 100644 --- a/examples/exampleview.cpp +++ b/examples/exampleview.cpp @@ -1,10 +1,14 @@ -#include +#include +#include +#include #include "exampleview.h" ExampleView::ExampleView(QWidget *parent) : QScrollArea(parent), - _widget(0) + _widget(0), + _layout(new QGridLayout) { + setLayout(_layout); } ExampleView::~ExampleView() @@ -13,21 +17,12 @@ ExampleView::~ExampleView() void ExampleView::setWidget(QWidget *widget) { - if (_widget) - _widget->removeEventFilter(this); - - widget->setParent(this); - widget->installEventFilter(this); + if (_widget) { + _layout->replaceWidget(_widget, widget); + } else { + _layout->addWidget(widget, 1, 1); + _layout->addWidget(new QLabel, 1, 0); + _layout->addWidget(new QLabel, 1, 2); + } _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()); - r.moveCenter(rect().center()); - _widget->setGeometry(r); - } - return QScrollArea::eventFilter(obj, event); -} diff --git a/examples/exampleview.h b/examples/exampleview.h index 1a7884c..70c9e3b 100644 --- a/examples/exampleview.h +++ b/examples/exampleview.h @@ -3,6 +3,8 @@ #include +class QGridLayout; + class ExampleView : public QScrollArea { Q_OBJECT @@ -13,11 +15,9 @@ public: void setWidget(QWidget *widget); -protected: - bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; - private: - QWidget *_widget; + QWidget *_widget; + QGridLayout *const _layout; }; #endif // EXAMPLEVIEW_H