diff options
author | Andy Shaw <andy.shaw@digia.com> | 2012-08-14 06:52:08 (GMT) |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-12 11:40:18 (GMT) |
commit | 111889ea5a1b40e3dc54380298096a978e9a5684 (patch) | |
tree | 6ef810dfc147fd67a0a2081037791cb8c9e8b47b /tests/manual | |
parent | 3dc047a4e11d2b18259d3ee383e81147c9098cb7 (diff) | |
download | Qt-111889ea5a1b40e3dc54380298096a978e9a5684.zip Qt-111889ea5a1b40e3dc54380298096a978e9a5684.tar.gz Qt-111889ea5a1b40e3dc54380298096a978e9a5684.tar.bz2 |
Ensure child items are updated even if the parent item has no content
When a parent item had its visiblity toggled, then the child item would
not update if the parent item had ItemHasNoContents and
ItemClipsChildrenToShape set. This is a common use case in declarative as
the root item has ItemHasNoContents set.
Task-number: QTBUG-26846
Change-Id: Id6592ebc4ba2caa4331a4a71f7247e40993131b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
(cherry picked from commit 49c251e0543ea80e69d1725bb08bb4dfe3f225ab)
Diffstat (limited to 'tests/manual')
-rw-r--r-- | tests/manual/qgraphicsitem/main.cpp | 81 | ||||
-rw-r--r-- | tests/manual/qgraphicsitem/qgraphicsitem.pro | 1 |
2 files changed, 82 insertions, 0 deletions
diff --git a/tests/manual/qgraphicsitem/main.cpp b/tests/manual/qgraphicsitem/main.cpp new file mode 100644 index 0000000..9a475cf --- /dev/null +++ b/tests/manual/qgraphicsitem/main.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include <QGraphicsView> +#include <QGraphicsScene> +#include <QGraphicsItem> +#include <QMessageBox> + +class MyObject : public QObject +{ +public: + MyObject(QGraphicsItem *i, QObject *parent = 0) : QObject(parent), itemToToggle(i) + { + startTimer(500); + } +protected: + void timerEvent(QTimerEvent *) + { + itemToToggle->setVisible(!itemToToggle->isVisible()); + } +private: + QGraphicsItem *itemToToggle; +}; + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QGraphicsView gv; + QGraphicsScene *scene = new QGraphicsScene(&gv); + gv.setScene(scene); + QGraphicsItem *rect = scene->addRect(0, 0, 200, 200, QPen(Qt::NoPen), QBrush(Qt::yellow)); + rect->setFlag(QGraphicsItem::ItemHasNoContents); + rect->setFlag(QGraphicsItem::ItemClipsChildrenToShape); + + QGraphicsItem *childRect = scene->addRect(0, 0, 100, 100, QPen(Qt::NoPen), QBrush(Qt::red)); + childRect->setParentItem(rect); + gv.show(); + MyObject o(rect); + QMessageBox::information(0, "What you should see", + "The red rectangle should toggle visiblity, so you should see it flash on and off"); + return a.exec(); +} diff --git a/tests/manual/qgraphicsitem/qgraphicsitem.pro b/tests/manual/qgraphicsitem/qgraphicsitem.pro new file mode 100644 index 0000000..28dcadc --- /dev/null +++ b/tests/manual/qgraphicsitem/qgraphicsitem.pro @@ -0,0 +1 @@ +SOURCES += main.cpp |