diff options
Diffstat (limited to 'src/qml/doc/snippets')
10 files changed, 392 insertions, 67 deletions
diff --git a/src/qml/doc/snippets/code/backend/backend.h b/src/qml/doc/snippets/code/backend/backend.h index fa7ce9eb86..6c64236bc7 100644 --- a/src/qml/doc/snippets/code/backend/backend.h +++ b/src/qml/doc/snippets/code/backend/backend.h @@ -53,11 +53,13 @@ #include <QObject> #include <QString> +#include <qqml.h> class BackEnd : public QObject { Q_OBJECT Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged) + QML_ELEMENT public: explicit BackEnd(QObject *parent = nullptr); diff --git a/src/qml/doc/snippets/code/backend/backend.pro b/src/qml/doc/snippets/code/backend/backend.pro new file mode 100644 index 0000000000..8bd2422718 --- /dev/null +++ b/src/qml/doc/snippets/code/backend/backend.pro @@ -0,0 +1,17 @@ +QT += qml + +#![registration] +CONFIG += qmltypes +QML_IMPORT_NAME = io.qt.examples.backend +QML_IMPORT_MAJOR_VERSION = 1 +#![registration] + +HEADERS += \ + backend.h + +SOURCES += \ + backend.cpp \ + main.cpp + +RESOURCES += \ + main.qml diff --git a/src/qml/doc/snippets/code/backend/main.cpp b/src/qml/doc/snippets/code/backend/main.cpp index 91a012dfda..52fcb38621 100644 --- a/src/qml/doc/snippets/code/backend/main.cpp +++ b/src/qml/doc/snippets/code/backend/main.cpp @@ -51,14 +51,10 @@ #include <QGuiApplication> #include <QQmlApplicationEngine> -#include "backend.h" - int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - qmlRegisterType<BackEnd>("io.qt.examples.backend", 1, 0, "BackEnd"); - QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); diff --git a/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.cpp b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.cpp index d74cc13d04..b41a9b4dff 100644 --- a/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.cpp +++ b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.cpp @@ -51,84 +51,102 @@ #include "avatarExample.h" #include <QQmlEngine> #include <QQmlComponent> +#include <QGuiApplication> -void registerTypes() +struct Expectations { -//![0] - qmlRegisterType<AvatarExample>("Qt.example", 1, 0, "AvatarExample"); -//![0] -} + QQmlEngine engine; -void expectOne() -{ + void expectOne() + { //![1] -QQmlComponent component(&engine, "exampleOne.qml"); -QObject *object = component.create(); -// The scarce resource will have been released automatically -// by this point, after the binding expression was evaluated. -delete object; + QQmlComponent component(&engine, "qrc:/exampleOne.qml"); + QObject *object = component.create(); + // The scarce resource will have been released automatically + // by this point, after the binding expression was evaluated. + bool expectedResult = (object->property("avatarWidth").toInt() == 100); + delete object; //![1] -} + Q_ASSERT(expectedResult); + } -void expectTwo() -{ + void expectTwo() + { //![2] -QQmlComponent component(&engine, "exampleTwo.qml"); -QObject *object = component.create(); -// The scarce resource will not have been released automatically -// after the binding expression was evaluated. -// Since the scarce resource was not released explicitly prior -// to the binding expression being evaluated, we get: -bool expectedResult = (object->property("avatar").isValid() == true); -delete object; + QQmlComponent component(&engine, "qrc:/exampleTwo.qml"); + QObject *object = component.create(); + // The scarce resource will not have been released automatically + // after the binding expression was evaluated. + // Since the scarce resource was not released explicitly prior + // to the binding expression being evaluated, we get: + bool expectedResult = (object->property("avatar").isValid() == true); + delete object; //![2] -} + Q_ASSERT(expectedResult); + } -void expectThree() -{ + void expectThree() + { //![3] -QQmlComponent component(&engine, "exampleThree.qml"); -QObject *object = component.create(); -// The resource was preserved explicitly during evaluation of the -// JavaScript expression. Thus, during property assignment, the -// scarce resource was still valid, and so we get: -bool expectedResult = (object->property("avatar").isValid() == true); -// The scarce resource will not be released until all references to -// the resource are released, and the JavaScript garbage collector runs. -delete object; + QQmlComponent component(&engine, "qrc:/exampleThree.qml"); + QObject *object = component.create(); + // The resource was preserved explicitly during evaluation of the + // JavaScript expression. Thus, during property assignment, the + // scarce resource was still valid, and so we get: + bool expectedResult = (object->property("avatar").isValid() == true); + // The scarce resource will not be released until all references to + // the resource are released, and the JavaScript garbage collector runs. + delete object; //![3] -} + Q_ASSERT(expectedResult); + } -void expectFour() -{ + void expectFour() + { //![4] -QQmlComponent component(&engine, "exampleFour.qml"); -QObject *object = component.create(); -// The scarce resource was explicitly preserved by the client during -// the importAvatar() function, and so the scarce resource -// remains valid until the explicit call to releaseAvatar(). As such, -// we get the expected results: -bool expectedResultOne = (object->property("avatarOne").isValid() == true); -bool expectedResultTwo = (object->property("avatarTwo").isValid() == false); -// Because the scarce resource referenced by avatarTwo was released explicitly, -// it will no longer be consuming any system resources (beyond what a normal -// JS Object would; that small overhead will exist until the JS GC runs, as per -// any other JavaScript object). -delete object; + QQmlComponent component(&engine, "qrc:/exampleFour.qml"); + QObject *object = component.create(); + // The scarce resource was explicitly preserved by the client during + // the importAvatar() function, and so the scarce resource + // remains valid until the explicit call to releaseAvatar(). As such, + // we get the expected results: + bool expectedResultOne = (object->property("avatarOne").isValid() == true); + bool expectedResultTwo = (object->property("avatarTwo").isValid() == false); + // Because the scarce resource referenced by avatarTwo was released explicitly, + // it will no longer be consuming any system resources (beyond what a normal + // JS Object would; that small overhead will exist until the JS GC runs, as per + // any other JavaScript object). + delete object; //![4] -} + Q_ASSERT(expectedResultOne); + Q_ASSERT(expectedResultTwo); + } -void expectFive() -{ + void expectFive() + { //![5] -QQmlComponent component(&engine, "exampleFive.qml"); -QObject *object = component.create(); -// We have the expected results: -bool expectedResultOne = (object->property("avatarOne").isValid() == false); -bool expectedResultTwo = (object->property("avatarTwo").isValid() == false); -// Because although only avatarTwo was explicitly released, -// avatarOne and avatarTwo were referencing the same -// scarce resource. -delete object; + QQmlComponent component(&engine, "qrc:/exampleFive.qml"); + QObject *object = component.create(); + // We have the expected results: + bool expectedResultOne = (object->property("avatarOne").isValid() == false); + bool expectedResultTwo = (object->property("avatarTwo").isValid() == false); + // Because although only avatarTwo was explicitly released, + // avatarOne and avatarTwo were referencing the same + // scarce resource. + delete object; //![5] + Q_ASSERT(expectedResultOne); + Q_ASSERT(expectedResultTwo); + } +}; + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + Expectations expectations; + expectations.expectOne(); + expectations.expectTwo(); + expectations.expectThree(); + expectations.expectFour(); + expectations.expectFive(); } diff --git a/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.h b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.h index fb9e238512..1acc3a1c2f 100644 --- a/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.h +++ b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/avatarExample.h @@ -53,6 +53,7 @@ #include <QObject> #include <QPixmap> +#include <qqml.h> //![0] // avatarExample.h @@ -60,6 +61,8 @@ class AvatarExample : public QObject { Q_OBJECT Q_PROPERTY(QPixmap avatar READ avatar WRITE setAvatar NOTIFY avatarChanged) + QML_ELEMENT + public: AvatarExample(QObject *parent = 0) : QObject(parent), m_value(100, 100) diff --git a/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/scarceresources.pro b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/scarceresources.pro new file mode 100644 index 0000000000..d88f8f574c --- /dev/null +++ b/src/qml/doc/snippets/qml/integrating-javascript/scarceresources/scarceresources.pro @@ -0,0 +1,22 @@ +QT += qml gui + +#![0] +CONFIG += qmltypes +QML_IMPORT_NAME = Qt.example +QML_IMPORT_MAJOR_VERSION = 1 +#![0] + +RESOURCES += \ + exampleFive.qml \ + exampleFour.js \ + exampleFour.qml \ + exampleOne.qml \ + exampleThree.js \ + exampleThree.qml \ + exampleTwo.qml + +HEADERS += \ + avatarExample.h + +SOURCES += \ + avatarExample.cpp diff --git a/src/qml/doc/snippets/qml/qml-documents/A.qml b/src/qml/doc/snippets/qml/qml-documents/A.qml new file mode 100644 index 0000000000..83c59dc5d7 --- /dev/null +++ b/src/qml/doc/snippets/qml/qml-documents/A.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//! [document] +// A.qml +import QtQuick 2.15 + +Item { + id: root + property string message: "From A" + component MyInlineComponent : Item { + Component.onCompleted: console.log(root.message) + } +} +//! [document] diff --git a/src/qml/doc/snippets/qml/qml-documents/B.qml b/src/qml/doc/snippets/qml/qml-documents/B.qml new file mode 100644 index 0000000000..5e603d50e0 --- /dev/null +++ b/src/qml/doc/snippets/qml/qml-documents/B.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [document] +// B.qml +import QtQuick 2.15 + +Item { + A.MyInlineComponent {} +} +//! [document] diff --git a/src/qml/doc/snippets/qml/qml-documents/Images.qml b/src/qml/doc/snippets/qml/qml-documents/Images.qml new file mode 100644 index 0000000000..fc9fa60282 --- /dev/null +++ b/src/qml/doc/snippets/qml/qml-documents/Images.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//! [document] +// Images.qml +import QtQuick 2.15 + +Item { + component LabeledImage: Column { + property alias source: image.source + property alias caption: text.text + + Image { + id: image + width: 50 + height: 50 + } + Text { + id: text + font.bold: true + } + } + + Row { + LabeledImage { + id: before + source: "before.png" + caption: "Before" + } + LabeledImage { + id: after + source: "after.png" + caption: "After" + } + } + property LabeledImage selectedImage: before +} +//! [document] diff --git a/src/qml/doc/snippets/qml/qml-documents/LabeledImageBox.qml b/src/qml/doc/snippets/qml/qml-documents/LabeledImageBox.qml new file mode 100644 index 0000000000..5a259a0cc6 --- /dev/null +++ b/src/qml/doc/snippets/qml/qml-documents/LabeledImageBox.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [document] +// LabeledImageBox.qml +import QtQuick 2.15 + +Rectangle { + property alias caption: image.caption + property alias source: image.source + border.width: 2 + border.color: "black" + Images.LabeledImage { + id: image + } +} +//! [document] |