1/****************************************************************************
2**
3** Copyright (C) 2020 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the test suite of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28#include <qtest.h>
29#include <QtTest/QSignalSpy>
30#include <QtQuick/qquickview.h>
31#include <QtQuick/qquickitem.h>
32#include <QtQml/qqmlengine.h>
33#include "../../shared/util.h"
34#include <QtCore/QDebug>
35#include <QtCore/QTimer>
36
37// Extra app-less tests
38class tst_QQuickViewExtra : public QQmlDataTest
39{
40 Q_OBJECT
41public:
42 tst_QQuickViewExtra();
43
44private slots:
45 void qtbug_87228();
46};
47
48tst_QQuickViewExtra::tst_QQuickViewExtra() { }
49
50void tst_QQuickViewExtra::qtbug_87228()
51{
52 QScopedPointer<QSignalSpy> deletionSpy;
53 {
54 int argc = 0;
55 QGuiApplication app(argc, nullptr);
56 QQuickView view;
57
58 view.setSource(testFileUrl(fileName: "qtbug_87228.qml"));
59 view.show();
60 QTimer::singleShot(interval: 500, context: &app, slot: QCoreApplication::quit);
61 app.exec();
62
63 QObject *listView = view.findChild<QObject *>(aName: "listView");
64 QVERIFY(listView);
65 QQuickItem *contentItem = listView->property(name: "contentItem").value<QQuickItem *>();
66 QVERIFY(contentItem);
67 auto children = contentItem->childItems();
68 QVERIFY(children.size() > 0);
69 // for the sake of this test, any child would be suitable, so pick first
70 deletionSpy.reset(other: new QSignalSpy(children[0], SIGNAL(destroyed(QObject *))));
71 }
72 QCOMPARE(deletionSpy->count(), 1);
73}
74
75QTEST_APPLESS_MAIN(tst_QQuickViewExtra)
76
77#include "tst_qquickview_extra.moc"
78

source code of qtdeclarative/tests/auto/quick/qquickview_extra/tst_qquickview_extra.cpp