From d5e612fb3e9753c762b741d135fabd2b1f8ae1a6 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 25 Apr 2013 11:16:40 +0200 Subject: Re-implemented itemChange must always call QQuickItem::itemChange Documentation for that fact, and the windowChanged signal. Fix existing QQuickItem subclasses which didn't call QQuickItem::itemChange. Examples should rather connect to the windowChanged() signal. Change-Id: Ieddcdbe69f849ddb120b64be9c5e0a21393b0ed9 Reviewed-by: Gunnar Sletta --- .../scenegraph/openglunderqml/doc/src/openglunderqml.qdoc | 6 +++--- examples/quick/scenegraph/openglunderqml/squircle.cpp | 11 +++-------- examples/quick/scenegraph/openglunderqml/squircle.h | 6 +++--- 3 files changed, 9 insertions(+), 14 deletions(-) (limited to 'examples/quick/scenegraph') diff --git a/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc b/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc index d9f49c942b..1f87412aa4 100644 --- a/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc +++ b/examples/quick/scenegraph/openglunderqml/doc/src/openglunderqml.qdoc @@ -93,8 +93,8 @@ For our paint function to be called, we need to connect to the window's signals. When Squircle object is populated into the - scene, the itemChange function is called with the change type \c - ItemSceneChange. We connect \l QQuickWindow::beforeRendering() to + scene, the windowChanged signal is emitted. In our handler, + we connect \l QQuickWindow::beforeRendering() to \c paint() to do the rendering, and \l QQuickWindow::beforeSynchronizing() to \c sync() to copy the state of the \c t property for the upcoming frame. @@ -157,7 +157,7 @@ We import the Squircle QML type with the name we registered in the \c main() function. We then instantiate it and create a running - NumberAnimation on the its \c t property. + NumberAnimation on its \c t property. \snippet scenegraph/openglunderqml/main.qml 2 diff --git a/examples/quick/scenegraph/openglunderqml/squircle.cpp b/examples/quick/scenegraph/openglunderqml/squircle.cpp index 84509fb615..8ceb9c5f9e 100644 --- a/examples/quick/scenegraph/openglunderqml/squircle.cpp +++ b/examples/quick/scenegraph/openglunderqml/squircle.cpp @@ -51,6 +51,7 @@ Squircle::Squircle() , m_t(0) , m_thread_t(0) { + connect(this, SIGNAL(windowChanged(QQuickWindow*)), this, SLOT(handleWindowChanged(QQuickWindow*))); } //! [7] @@ -66,17 +67,11 @@ void Squircle::setT(qreal t) } //! [8] - //! [1] -void Squircle::itemChange(ItemChange change, const ItemChangeData &) +void Squircle::handleWindowChanged(QQuickWindow *win) { - // The ItemSceneChange event is sent when we are first attached to a window. - if (change == ItemSceneChange) { - QQuickWindow *win = window(); - if (!win) - return; + if (win) { //! [1] - // Connect the beforeRendering signal to our paint function. // Since this call is executed on the rendering thread it must be // a Qt::DirectConnection diff --git a/examples/quick/scenegraph/openglunderqml/squircle.h b/examples/quick/scenegraph/openglunderqml/squircle.h index e292ca325f..449e02bbf1 100644 --- a/examples/quick/scenegraph/openglunderqml/squircle.h +++ b/examples/quick/scenegraph/openglunderqml/squircle.h @@ -61,14 +61,14 @@ public: signals: void tChanged(); -protected: - void itemChange(ItemChange change, const ItemChangeData &); - public slots: void paint(); void cleanup(); void sync(); +private slots: + void handleWindowChanged(QQuickWindow *win); + private: QOpenGLShaderProgram *m_program; -- cgit v1.2.3