aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/qml/doc/src/qml-extending.qdoc2
-rw-r--r--examples/qml/qmlextensionplugins/plugin.cpp2
-rw-r--r--examples/qml/referenceexamples/binding/happybirthdaysong.cpp2
-rw-r--r--examples/qml/referenceexamples/valuesource/happybirthdaysong.cpp2
-rw-r--r--examples/quick/customitems/dialcontrol/doc/src/dialcontrol.qdoc1
-rw-r--r--examples/quick/customitems/flipable/doc/src/flipable.qdoc1
-rw-r--r--examples/quick/customitems/scrollbar/doc/src/scrollbar.qdoc1
-rw-r--r--examples/quick/customitems/tabwidget/doc/src/tabwidget.qdoc2
-rw-r--r--examples/quick/demos/photosurface/photosurface.qml46
-rw-r--r--examples/quick/embeddedinwidgets/main.cpp11
-rw-r--r--examples/quick/imageprovider/doc/src/imageprovider.qdoc1
-rw-r--r--examples/quick/imageresponseprovider/ImageResponseProviderCore/qmldir2
-rw-r--r--examples/quick/imageresponseprovider/doc/src/imageresponseprovider.qdoc37
-rw-r--r--examples/quick/imageresponseprovider/imageresponseprovider-example.qml48
-rw-r--r--examples/quick/imageresponseprovider/imageresponseprovider.cpp123
-rw-r--r--examples/quick/imageresponseprovider/imageresponseprovider.pro15
-rw-r--r--examples/quick/imageresponseprovider/imageresponseprovider.qmlproject14
-rw-r--r--examples/quick/mousearea/mousearea-wheel-example.qml7
-rw-r--r--examples/quick/quick.pro1
-rw-r--r--examples/quick/quickwidgets/qquickviewcomparison/main.cpp8
-rw-r--r--examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp24
-rw-r--r--examples/quick/quickwidgets/qquickviewcomparison/mainwindow.h5
-rw-r--r--examples/quick/quickwidgets/quickwidget/main.cpp17
-rw-r--r--examples/quick/rendercontrol/window_multithreaded.cpp2
-rw-r--r--examples/quick/rendercontrol/window_singlethreaded.cpp2
-rw-r--r--examples/quick/scenegraph/openglunderqml/squircle.cpp13
-rw-r--r--examples/quick/scenegraph/openglunderqml/squircle.h2
-rw-r--r--examples/quick/scenegraph/textureinthread/threadrenderer.cpp10
-rw-r--r--examples/quick/scenegraph/threadedanimation/spinner.cpp4
-rw-r--r--examples/quick/scenegraph/twotextureproviders/xorblender.cpp4
-rw-r--r--examples/quick/shared/shared.h4
-rw-r--r--examples/quick/text/doc/src/text.qdoc2
-rw-r--r--examples/quick/threading/threadedlistmodel/doc/src/threadedlistmodel.qdoc2
-rw-r--r--examples/quick/touchinteraction/doc/src/touchinteraction.qdoc10
-rw-r--r--[-rwxr-xr-x]examples/quick/tutorials/samegame/samegame4/content/samegame.js0
35 files changed, 353 insertions, 74 deletions
diff --git a/examples/qml/doc/src/qml-extending.qdoc b/examples/qml/doc/src/qml-extending.qdoc
index 77ccd2f1e9..e5b364e0bc 100644
--- a/examples/qml/doc/src/qml-extending.qdoc
+++ b/examples/qml/doc/src/qml-extending.qdoc
@@ -73,7 +73,7 @@ This example builds on:
\li \l {Extending QML - Adding Types Example}
\endlist
-Shows how to use \l qmlRegisterExtendedType() to provide an \l {Registering
+Shows how to use \l {QQmlEngine::}{qmlRegisterExtendedType()} to provide an \l {Registering
Extension Objects}{extension object} to a \l QLineEdit without modifying or
subclassing. The QML engine instantiates a \l QLineEdit and sets a property that
only exists on the extension type. The extension type performs calls on the \l
diff --git a/examples/qml/qmlextensionplugins/plugin.cpp b/examples/qml/qmlextensionplugins/plugin.cpp
index 729c88da73..56057b7f06 100644
--- a/examples/qml/qmlextensionplugins/plugin.cpp
+++ b/examples/qml/qmlextensionplugins/plugin.cpp
@@ -110,7 +110,7 @@ public:
if (++instances == 1) {
if (!timer)
timer = new MinuteTimer(QCoreApplication::instance());
- connect(timer, SIGNAL(timeChanged()), this, SIGNAL(timeChanged()));
+ connect(timer, &MinuteTimer::timeChanged, this, &TimeModel::timeChanged);
timer->start();
}
}
diff --git a/examples/qml/referenceexamples/binding/happybirthdaysong.cpp b/examples/qml/referenceexamples/binding/happybirthdaysong.cpp
index 85a5416190..975f6d409a 100644
--- a/examples/qml/referenceexamples/binding/happybirthdaysong.cpp
+++ b/examples/qml/referenceexamples/binding/happybirthdaysong.cpp
@@ -45,7 +45,7 @@ HappyBirthdaySong::HappyBirthdaySong(QObject *parent)
{
setName(QString());
QTimer *timer = new QTimer(this);
- QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance()));
+ QObject::connect(timer, &QTimer::timeout, this, &HappyBirthdaySong::advance);
timer->start(1000);
}
diff --git a/examples/qml/referenceexamples/valuesource/happybirthdaysong.cpp b/examples/qml/referenceexamples/valuesource/happybirthdaysong.cpp
index 7655b3ebc9..96b4abe775 100644
--- a/examples/qml/referenceexamples/valuesource/happybirthdaysong.cpp
+++ b/examples/qml/referenceexamples/valuesource/happybirthdaysong.cpp
@@ -45,7 +45,7 @@ HappyBirthdaySong::HappyBirthdaySong(QObject *parent)
{
setName(QString());
QTimer *timer = new QTimer(this);
- QObject::connect(timer, SIGNAL(timeout()), this, SLOT(advance()));
+ QObject::connect(timer, &QTimer::timeout, this, &HappyBirthdaySong::advance);
timer->start(1000);
}
diff --git a/examples/quick/customitems/dialcontrol/doc/src/dialcontrol.qdoc b/examples/quick/customitems/dialcontrol/doc/src/dialcontrol.qdoc
index 064dba51ef..9bc6a61716 100644
--- a/examples/quick/customitems/dialcontrol/doc/src/dialcontrol.qdoc
+++ b/examples/quick/customitems/dialcontrol/doc/src/dialcontrol.qdoc
@@ -42,6 +42,7 @@
/*!
\title UI Components: Dial Control Example
\example customitems/dialcontrol
+ \brief The Dial Control Example shows how to create a speedometer-type dial.
This example shows how to create a dial-type control. It combines
\l Image elements with \l Rotation transforms and \l SpringAnimation behaviors
diff --git a/examples/quick/customitems/flipable/doc/src/flipable.qdoc b/examples/quick/customitems/flipable/doc/src/flipable.qdoc
index b492f2c147..c4b7969b7e 100644
--- a/examples/quick/customitems/flipable/doc/src/flipable.qdoc
+++ b/examples/quick/customitems/flipable/doc/src/flipable.qdoc
@@ -41,6 +41,7 @@
/*!
\title UI Components: Flipable Example
\example customitems/flipable
+ \brief The Flipable Example shows an item that flips whenever clicked, rotating around the y-axis.
This example shows how to use the \l Flipable element.
diff --git a/examples/quick/customitems/scrollbar/doc/src/scrollbar.qdoc b/examples/quick/customitems/scrollbar/doc/src/scrollbar.qdoc
index 7adb3beb94..e5a4b11742 100644
--- a/examples/quick/customitems/scrollbar/doc/src/scrollbar.qdoc
+++ b/examples/quick/customitems/scrollbar/doc/src/scrollbar.qdoc
@@ -27,6 +27,7 @@
/*!
\title UI Components: Scroll Bar Example
\example customitems/scrollbar
+ \brief The Scroll Bar Example shows how to use scroll bars on a flickable element.
This example shows how to create scroll bars for a \l Flickable element
using the \l {Flickable::visibleArea.xPosition}{Flickable::visibleArea}
diff --git a/examples/quick/customitems/tabwidget/doc/src/tabwidget.qdoc b/examples/quick/customitems/tabwidget/doc/src/tabwidget.qdoc
index dbda19384b..862c527d9f 100644
--- a/examples/quick/customitems/tabwidget/doc/src/tabwidget.qdoc
+++ b/examples/quick/customitems/tabwidget/doc/src/tabwidget.qdoc
@@ -28,6 +28,8 @@
/*!
\title TabWidget Example
\example customitems/tabwidget
+ \brief The TabWidget example shows how to create a tabwidget using property aliases
+ and QML Object default properties
This example shows how to create a tab widget. It also demonstrates how
\l {Property aliases}{property aliases} and
diff --git a/examples/quick/demos/photosurface/photosurface.qml b/examples/quick/demos/photosurface/photosurface.qml
index e5cfd827dc..22cef62157 100644
--- a/examples/quick/demos/photosurface/photosurface.qml
+++ b/examples/quick/demos/photosurface/photosurface.qml
@@ -37,7 +37,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-import QtQuick 2.5
+import QtQuick 2.6
import QtQuick.Dialogs 1.0
import QtQuick.Window 2.1
import Qt.labs.folderlistmodel 1.0
@@ -172,7 +172,7 @@ Window {
height: flick.height * (flick.height / flick.contentHeight) - (width - anchors.margins) * 2
y: flick.contentY * (flick.height / flick.contentHeight)
NumberAnimation on opacity { id: vfade; to: 0; duration: 500 }
- onYChanged: { opacity = 1.0; fadeTimer.restart() }
+ onYChanged: { opacity = 1.0; scrollFadeTimer.restart() }
}
Rectangle {
@@ -188,10 +188,10 @@ Window {
width: flick.width * (flick.width / flick.contentWidth) - (height - anchors.margins) * 2
x: flick.contentX * (flick.width / flick.contentWidth)
NumberAnimation on opacity { id: hfade; to: 0; duration: 500 }
- onXChanged: { opacity = 1.0; fadeTimer.restart() }
+ onXChanged: { opacity = 1.0; scrollFadeTimer.restart() }
}
- Timer { id: fadeTimer; interval: 1000; onTriggered: { hfade.start(); vfade.start() } }
+ Timer { id: scrollFadeTimer; interval: 1000; onTriggered: { hfade.start(); vfade.start() } }
Image {
anchors.top: parent.top
@@ -202,6 +202,42 @@ Window {
anchors.fill: parent
anchors.margins: -10
onClicked: fileDialog.open()
+ hoverEnabled: true
+ onPositionChanged: {
+ tooltip.visible = false
+ hoverTimer.start()
+ }
+ onExited: {
+ tooltip.visible = false
+ hoverTimer.stop()
+ }
+ Timer {
+ id: hoverTimer
+ interval: 1000
+ onTriggered: {
+ tooltip.x = parent.mouseX
+ tooltip.y = parent.mouseY
+ tooltip.visible = true
+ }
+ }
+ Rectangle {
+ id: tooltip
+ border.color: "black"
+ color: "beige"
+ width: tooltipText.implicitWidth + 8
+ height: tooltipText.implicitHeight + 8
+ visible: false
+ Text {
+ id: tooltipText
+ anchors.centerIn: parent
+ text: "Open an image directory (" + openShortcut.sequenceString + ")"
+ }
+ }
+ }
+ Shortcut {
+ id: openShortcut
+ sequence: StandardKey.Open
+ onActivated: fileDialog.open()
}
}
@@ -217,5 +253,7 @@ Window {
"With a mouse: drag normally, use the vertical wheel to zoom, horizontal wheel to rotate, or hold Ctrl while using the vertical wheel to rotate"
}
+ Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() }
+
Component.onCompleted: fileDialog.open()
}
diff --git a/examples/quick/embeddedinwidgets/main.cpp b/examples/quick/embeddedinwidgets/main.cpp
index aa6da01bd9..ef404f9fb6 100644
--- a/examples/quick/embeddedinwidgets/main.cpp
+++ b/examples/quick/embeddedinwidgets/main.cpp
@@ -63,10 +63,10 @@ MainWindow::MainWindow()
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
m_quickView->setResizeMode(QQuickView::SizeRootObjectToView);
- connect(m_quickView, SIGNAL(statusChanged(QQuickView::Status)),
- this, SLOT(quickViewStatusChanged(QQuickView::Status)));
- connect(m_quickView, SIGNAL(sceneGraphError(QQuickWindow::SceneGraphError,QString)),
- this, SLOT(sceneGraphError(QQuickWindow::SceneGraphError,QString)));
+ connect(m_quickView, &QQuickView::statusChanged,
+ this, &MainWindow::quickViewStatusChanged);
+ connect(m_quickView, &QQuickWindow::sceneGraphError,
+ this, &MainWindow::sceneGraphError);
m_quickView->setSource(QUrl(QStringLiteral("qrc:///embeddedinwidgets/main.qml")));
QWidget *container = QWidget::createWindowContainer(m_quickView);
@@ -79,8 +79,7 @@ MainWindow::MainWindow()
setCentralWidget(centralWidget);
QMenu *fileMenu = menuBar()->addMenu(tr("File"));
- QAction *quitAction = fileMenu->addAction(tr("Quit"));
- connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
+ fileMenu->addAction(tr("Quit"), qApp, &QCoreApplication::quit);
}
void MainWindow::quickViewStatusChanged(QQuickView::Status status)
diff --git a/examples/quick/imageprovider/doc/src/imageprovider.qdoc b/examples/quick/imageprovider/doc/src/imageprovider.qdoc
index ba4817ca0f..f848e03fcd 100644
--- a/examples/quick/imageprovider/doc/src/imageprovider.qdoc
+++ b/examples/quick/imageprovider/doc/src/imageprovider.qdoc
@@ -27,6 +27,7 @@
/*!
\title C++ Extensions: Image Provider Example
+ \brief How to load images in QML with QQuickImageProvider.
\example imageprovider
This examples shows how to use QQuickImageProvider to serve images
diff --git a/examples/quick/imageresponseprovider/ImageResponseProviderCore/qmldir b/examples/quick/imageresponseprovider/ImageResponseProviderCore/qmldir
new file mode 100644
index 0000000000..3a5821bdf2
--- /dev/null
+++ b/examples/quick/imageresponseprovider/ImageResponseProviderCore/qmldir
@@ -0,0 +1,2 @@
+plugin qmlimageresponseproviderplugin
+
diff --git a/examples/quick/imageresponseprovider/doc/src/imageresponseprovider.qdoc b/examples/quick/imageresponseprovider/doc/src/imageresponseprovider.qdoc
new file mode 100644
index 0000000000..a883ee1f2e
--- /dev/null
+++ b/examples/quick/imageresponseprovider/doc/src/imageresponseprovider.qdoc
@@ -0,0 +1,37 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Canonical Limited and/or its subsidiary(-ies)
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** 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 http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \title C++ Extensions: Image Response Provider Example
+ \example imageresponseprovider
+ \brief How to load images asynchronously in QML.
+
+
+ This examples shows how to use QQuickImageProvider to serve images
+ asynchronously to QML image elements.
+*/
+
diff --git a/examples/quick/imageresponseprovider/imageresponseprovider-example.qml b/examples/quick/imageresponseprovider/imageresponseprovider-example.qml
new file mode 100644
index 0000000000..20c1e69434
--- /dev/null
+++ b/examples/quick/imageresponseprovider/imageresponseprovider-example.qml
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Canonical Limited and/or its subsidiary(-ies)
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import "ImageResponseProviderCore"
+
+Column {
+ Image { source: "image://async/slow" }
+ Image { source: "image://async/fast" }
+}
+
diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.cpp b/examples/quick/imageresponseprovider/imageresponseprovider.cpp
new file mode 100644
index 0000000000..bdec29114b
--- /dev/null
+++ b/examples/quick/imageresponseprovider/imageresponseprovider.cpp
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Canonical Limited and/or its subsidiary(-ies)
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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$
+**
+****************************************************************************/
+
+
+#include <qqmlextensionplugin.h>
+
+#include <qqmlengine.h>
+#include <qquickimageprovider.h>
+#include <QDebug>
+#include <QImage>
+#include <QThreadPool>
+
+class AsyncImageResponse : public QQuickImageResponse, public QRunnable
+{
+ public:
+ AsyncImageResponse(const QString &id, const QSize &requestedSize)
+ : m_id(id), m_requestedSize(requestedSize), m_texture(0)
+ {
+ setAutoDelete(false);
+ }
+
+ QQuickTextureFactory *textureFactory() const
+ {
+ return m_texture;
+ }
+
+ void run()
+ {
+ QImage image(50, 50, QImage::Format_RGB32);
+ if (m_id == "slow") {
+ qDebug() << "Slow, red, sleeping for 5 seconds";
+ QThread::sleep(5);
+ image.fill(Qt::red);
+ } else {
+ qDebug() << "Fast, blue, sleeping for 1 second";
+ QThread::sleep(1);
+ image.fill(Qt::blue);
+ }
+ if (m_requestedSize.isValid())
+ image = image.scaled(m_requestedSize);
+ m_texture = QQuickTextureFactory::textureFactoryForImage(image);
+ emit finished();
+ }
+
+ QString m_id;
+ QSize m_requestedSize;
+ QQuickTextureFactory *m_texture;
+};
+
+class AsyncImageProvider : public QQuickAsyncImageProvider
+{
+public:
+ QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize)
+ {
+ AsyncImageResponse *response = new AsyncImageResponse(id, requestedSize);
+ pool.start(response);
+ return response;
+ }
+
+private:
+ QThreadPool pool;
+};
+
+
+class ImageProviderExtensionPlugin : public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
+public:
+ void registerTypes(const char *uri)
+ {
+ Q_UNUSED(uri);
+ }
+
+ void initializeEngine(QQmlEngine *engine, const char *uri)
+ {
+ Q_UNUSED(uri);
+ engine->addImageProvider("async", new AsyncImageProvider);
+ }
+
+};
+
+
+#define QQmlExtensionInterface_iid "org.qt-project.Qt.QQmlExtensionInterface"
+
+#include "imageresponseprovider.moc"
diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.pro b/examples/quick/imageresponseprovider/imageresponseprovider.pro
new file mode 100644
index 0000000000..856ddde863
--- /dev/null
+++ b/examples/quick/imageresponseprovider/imageresponseprovider.pro
@@ -0,0 +1,15 @@
+TEMPLATE = lib
+CONFIG += plugin
+QT += qml quick
+
+DESTDIR = ImageResponseProviderCore
+TARGET = qmlimageresponseproviderplugin
+
+SOURCES += imageresponseprovider.cpp
+
+EXAMPLE_FILES = imageresponseprovider-example.qml
+
+target.path = $$[QT_INSTALL_EXAMPLES]/quick/imageresponseprovider/ImageResponseProviderCore
+qml.files = ImageResponseProviderCore/qmldir
+qml.path = $$[QT_INSTALL_EXAMPLES]/quick/imageresponseprovider/ImageResponseProviderCore
+INSTALLS = target qml
diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.qmlproject b/examples/quick/imageresponseprovider/imageresponseprovider.qmlproject
new file mode 100644
index 0000000000..2bb4016996
--- /dev/null
+++ b/examples/quick/imageresponseprovider/imageresponseprovider.qmlproject
@@ -0,0 +1,14 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+}
diff --git a/examples/quick/mousearea/mousearea-wheel-example.qml b/examples/quick/mousearea/mousearea-wheel-example.qml
index ca6518ec4b..861639811c 100644
--- a/examples/quick/mousearea/mousearea-wheel-example.qml
+++ b/examples/quick/mousearea/mousearea-wheel-example.qml
@@ -64,10 +64,9 @@ Rectangle {
anchors.fill: parent
onWheel: {
if (wheel.modifiers & Qt.ControlModifier) {
- if (wheel.angleDelta.y > 0)
- parent.scaleFactor += 0.2;
- else if (parent.scaleFactor - 0.2 >= 0.2)
- parent.scaleFactor -= 0.2;
+ parent.scaleFactor += 0.2 * wheel.angleDelta.y / 120;
+ if (parent.scaleFactor < 0)
+ parent.scaleFactor = 0;
}
}
}
diff --git a/examples/quick/quick.pro b/examples/quick/quick.pro
index a412c53a65..c5ef46173c 100644
--- a/examples/quick/quick.pro
+++ b/examples/quick/quick.pro
@@ -20,6 +20,7 @@ SUBDIRS = quick-accessibility \
tutorials \
customitems \
imageprovider \
+ imageresponseprovider \
window \
particles \
demos \
diff --git a/examples/quick/quickwidgets/qquickviewcomparison/main.cpp b/examples/quick/quickwidgets/qquickviewcomparison/main.cpp
index bbe97a947f..7e45e42527 100644
--- a/examples/quick/quickwidgets/qquickviewcomparison/main.cpp
+++ b/examples/quick/quickwidgets/qquickviewcomparison/main.cpp
@@ -48,7 +48,13 @@ int main(int argc, char **argv)
QApplication app(argc, argv);
- MainWindow widgetWindow;
+ bool transparency = QCoreApplication::arguments().contains(QStringLiteral("--transparent"));
+ MainWindow widgetWindow(transparency);
+ if (transparency) {
+ widgetWindow.setAttribute(Qt::WA_TranslucentBackground);
+ widgetWindow.setAttribute(Qt::WA_NoSystemBackground, false);
+ }
+
widgetWindow.resize(1024, 768);
widgetWindow.show();
diff --git a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
index dce89d6b18..078d8e7e03 100644
--- a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
+++ b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.cpp
@@ -47,10 +47,10 @@
#include <QLabel>
#include <QQuickItem>
-MainWindow::MainWindow()
+MainWindow::MainWindow(bool transparency)
: m_currentView(0),
m_currentRootObject(0),
- m_transparent(false)
+ m_transparent(transparency)
{
QVBoxLayout *layout = new QVBoxLayout;
@@ -103,13 +103,6 @@ MainWindow::MainWindow()
connect(m_checkboxOverlayVisible, &QCheckBox::toggled, m_overlayLabel, &QWidget::setVisible);
layout->addWidget(m_checkboxOverlayVisible);
- m_checkboxTransparent = new QCheckBox(tr("Transparent background in QQuickWidget"));
- connect(m_radioWidget, &QCheckBox::toggled, m_checkboxTransparent, &QWidget::setEnabled);
-#ifdef Q_OS_LINUX
- connect(m_checkboxTransparent, &QCheckBox::toggled, this, &MainWindow::onTransparentChanged);
- layout->addWidget(m_checkboxTransparent);
-#endif
-
setLayout(layout);
updateView();
@@ -170,10 +163,8 @@ void MainWindow::updateView()
switchTo(QWidget::createWindowContainer(quickView));
} else if (m_state == UseWidget) {
QQuickWidget *quickWidget = new QQuickWidget;
- if (m_transparent) {
+ if (m_transparent)
quickWidget->setClearColor(Qt::transparent);
- quickWidget->setAttribute(Qt::WA_TranslucentBackground);
- }
quickWidget->setFormat(m_format);
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
connect(quickWidget, &QQuickWidget::statusChanged, this, &MainWindow::onStatusChangedWidget);
@@ -186,7 +177,8 @@ void MainWindow::updateView()
if (m_currentRootObject) {
m_currentRootObject->setProperty("currentText", text);
m_currentRootObject->setProperty("multisample", m_checkboxMultiSample->isChecked());
- m_currentRootObject->setProperty("translucency", m_transparent);
+ if (!QCoreApplication::arguments().contains(QStringLiteral("--no_render_alpha")))
+ m_currentRootObject->setProperty("translucency", m_transparent);
}
m_overlayLabel->raise();
@@ -242,9 +234,3 @@ void MainWindow::onSceneGraphError(QQuickWindow::SceneGraphError error, const QS
{
m_labelStatus->setText(tr("Scenegraph error %1: %2").arg(error).arg(message));
}
-
-void MainWindow::onTransparentChanged(bool enabled)
-{
- m_transparent = enabled;
- updateView();
-}
diff --git a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.h b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.h
index c58523f675..5b86c93f38 100644
--- a/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.h
+++ b/examples/quick/quickwidgets/qquickviewcomparison/mainwindow.h
@@ -53,7 +53,7 @@ QT_FORWARD_DECLARE_CLASS(QLayout)
class MainWindow : public QWidget
{
public:
- MainWindow();
+ MainWindow(bool transparency);
protected:
void resizeEvent(QResizeEvent*);
@@ -63,7 +63,6 @@ private slots:
void onStatusChangedView(QQuickView::Status status);
void onStatusChangedWidget(QQuickWidget::Status status);
void onSceneGraphError(QQuickWindow::SceneGraphError error, const QString &message);
- void onTransparentChanged(bool enabled);
private:
void switchTo(QWidget *view);
@@ -86,8 +85,6 @@ private:
QSurfaceFormat m_format;
- QCheckBox *m_checkboxTransparent;
-
bool m_transparent;
};
diff --git a/examples/quick/quickwidgets/quickwidget/main.cpp b/examples/quick/quickwidgets/quickwidget/main.cpp
index 1e5cf89319..65258d958e 100644
--- a/examples/quick/quickwidgets/quickwidget/main.cpp
+++ b/examples/quick/quickwidgets/quickwidget/main.cpp
@@ -78,10 +78,10 @@ MainWindow::MainWindow()
QUrl source("qrc:quickwidget/rotatingsquare.qml");
- connect(m_quickWidget, SIGNAL(statusChanged(QQuickWidget::Status)),
- this, SLOT(quickWidgetStatusChanged(QQuickWidget::Status)));
- connect(m_quickWidget, SIGNAL(sceneGraphError(QQuickWindow::SceneGraphError,QString)),
- this, SLOT(sceneGraphError(QQuickWindow::SceneGraphError,QString)));
+ connect(m_quickWidget, &QQuickWidget::statusChanged,
+ this, &MainWindow::quickWidgetStatusChanged);
+ connect(m_quickWidget, &QQuickWidget::sceneGraphError,
+ this, &MainWindow::sceneGraphError);
m_quickWidget->resize(300,300);
m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView );
m_quickWidget->setSource(source);
@@ -91,12 +91,9 @@ MainWindow::MainWindow()
setCentralWidget(centralWidget);
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
- QAction *grabAction = fileMenu->addAction(tr("Grab to image"));
- connect(grabAction, SIGNAL(triggered()), this, SLOT(grabToFile()));
- QAction *renderAction = fileMenu->addAction(tr("Render to pixmap"));
- connect(renderAction, SIGNAL(triggered()), this, SLOT(renderToFile()));
- QAction *quitAction = fileMenu->addAction(tr("Quit"));
- connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
+ fileMenu->addAction(tr("Grab to imFage"), this, &MainWindow::grabToFile);
+ fileMenu->addAction(tr("Render to pixmap"), this, &MainWindow::renderToFile);
+ fileMenu->addAction(tr("Quit"), qApp, &QCoreApplication::quit);
}
void MainWindow::quickWidgetStatusChanged(QQuickWidget::Status status)
diff --git a/examples/quick/rendercontrol/window_multithreaded.cpp b/examples/quick/rendercontrol/window_multithreaded.cpp
index 8de5a7776d..4df3488ab3 100644
--- a/examples/quick/rendercontrol/window_multithreaded.cpp
+++ b/examples/quick/rendercontrol/window_multithreaded.cpp
@@ -353,7 +353,7 @@ void WindowMultiThreaded::polishSyncAndRender()
void WindowMultiThreaded::run()
{
- disconnect(m_qmlComponent, SIGNAL(statusChanged(QQmlComponent::Status)), this, SLOT(run()));
+ disconnect(m_qmlComponent, &QQmlComponent::statusChanged, this, &WindowMultiThreaded::run);
if (m_qmlComponent->isError()) {
QList<QQmlError> errorList = m_qmlComponent->errors();
diff --git a/examples/quick/rendercontrol/window_singlethreaded.cpp b/examples/quick/rendercontrol/window_singlethreaded.cpp
index 1e81f08f7e..e43093e241 100644
--- a/examples/quick/rendercontrol/window_singlethreaded.cpp
+++ b/examples/quick/rendercontrol/window_singlethreaded.cpp
@@ -206,7 +206,7 @@ void WindowSingleThreaded::requestUpdate()
void WindowSingleThreaded::run()
{
- disconnect(m_qmlComponent, SIGNAL(statusChanged(QQmlComponent::Status)), this, SLOT(run()));
+ disconnect(m_qmlComponent, &QQmlComponent::statusChanged, this, &WindowSingleThreaded::run);
if (m_qmlComponent->isError()) {
QList<QQmlError> errorList = m_qmlComponent->errors();
diff --git a/examples/quick/scenegraph/openglunderqml/squircle.cpp b/examples/quick/scenegraph/openglunderqml/squircle.cpp
index 8ef975c5b6..8bb9af1ed4 100644
--- a/examples/quick/scenegraph/openglunderqml/squircle.cpp
+++ b/examples/quick/scenegraph/openglunderqml/squircle.cpp
@@ -42,7 +42,7 @@ Squircle::Squircle()
: m_t(0)
, m_renderer(0)
{
- connect(this, SIGNAL(windowChanged(QQuickWindow*)), this, SLOT(handleWindowChanged(QQuickWindow*)));
+ connect(this, &QQuickItem::windowChanged, this, &Squircle::handleWindowChanged);
}
//! [7]
@@ -62,8 +62,8 @@ void Squircle::setT(qreal t)
void Squircle::handleWindowChanged(QQuickWindow *win)
{
if (win) {
- connect(win, SIGNAL(beforeSynchronizing()), this, SLOT(sync()), Qt::DirectConnection);
- connect(win, SIGNAL(sceneGraphInvalidated()), this, SLOT(cleanup()), Qt::DirectConnection);
+ connect(win, &QQuickWindow::beforeSynchronizing, this, &Squircle::sync, Qt::DirectConnection);
+ connect(win, &QQuickWindow::sceneGraphInvalidated, this, &Squircle::cleanup, Qt::DirectConnection);
//! [1]
// If we allow QML to do the clearing, they would clear what we paint
// and nothing would show.
@@ -93,10 +93,11 @@ void Squircle::sync()
{
if (!m_renderer) {
m_renderer = new SquircleRenderer();
- connect(window(), SIGNAL(beforeRendering()), m_renderer, SLOT(paint()), Qt::DirectConnection);
+ connect(window(), &QQuickWindow::beforeRendering, m_renderer, &SquircleRenderer::paint, Qt::DirectConnection);
}
m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio());
m_renderer->setT(m_t);
+ m_renderer->setWindow(window());
}
//! [9]
@@ -156,5 +157,9 @@ void SquircleRenderer::paint()
m_program->disableAttributeArray(0);
m_program->release();
+
+ // Not strictly needed for this example, but generally useful for when
+ // mixing with raw OpenGL.
+ m_window->resetOpenGLState();
}
//! [5]
diff --git a/examples/quick/scenegraph/openglunderqml/squircle.h b/examples/quick/scenegraph/openglunderqml/squircle.h
index f797d7a7a5..28016def44 100644
--- a/examples/quick/scenegraph/openglunderqml/squircle.h
+++ b/examples/quick/scenegraph/openglunderqml/squircle.h
@@ -50,6 +50,7 @@ public:
void setT(qreal t) { m_t = t; }
void setViewportSize(const QSize &size) { m_viewportSize = size; }
+ void setWindow(QQuickWindow *window) { m_window = window; }
public slots:
void paint();
@@ -58,6 +59,7 @@ private:
QSize m_viewportSize;
qreal m_t;
QOpenGLShaderProgram *m_program;
+ QQuickWindow *m_window;
};
//! [1]
diff --git a/examples/quick/scenegraph/textureinthread/threadrenderer.cpp b/examples/quick/scenegraph/textureinthread/threadrenderer.cpp
index 272b903ef2..95fd377dcf 100644
--- a/examples/quick/scenegraph/textureinthread/threadrenderer.cpp
+++ b/examples/quick/scenegraph/textureinthread/threadrenderer.cpp
@@ -228,7 +228,7 @@ void ThreadRenderer::ready()
m_renderThread->moveToThread(m_renderThread);
- connect(window(), SIGNAL(sceneGraphInvalidated()), m_renderThread, SLOT(shutDown()), Qt::QueuedConnection);
+ connect(window(), &QQuickWindow::sceneGraphInvalidated, m_renderThread, &RenderThread::shutDown, Qt::QueuedConnection);
m_renderThread->start();
update();
@@ -274,10 +274,10 @@ QSGNode *ThreadRenderer::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *
*
* This FBO rendering pipeline is throttled by vsync on the scene graph rendering thread.
*/
- connect(m_renderThread, SIGNAL(textureReady(int,QSize)), node, SLOT(newTexture(int,QSize)), Qt::DirectConnection);
- connect(node, SIGNAL(pendingNewTexture()), window(), SLOT(update()), Qt::QueuedConnection);
- connect(window(), SIGNAL(beforeRendering()), node, SLOT(prepareNode()), Qt::DirectConnection);
- connect(node, SIGNAL(textureInUse()), m_renderThread, SLOT(renderNext()), Qt::QueuedConnection);
+ connect(m_renderThread, &RenderThread::textureReady, node, &TextureNode::newTexture, Qt::DirectConnection);
+ connect(node, &TextureNode::pendingNewTexture, window(), &QQuickWindow::update, Qt::QueuedConnection);
+ connect(window(), &QQuickWindow::beforeRendering, node, &TextureNode::prepareNode, Qt::DirectConnection);
+ connect(node, &TextureNode::textureInUse, m_renderThread, &RenderThread::renderNext, Qt::QueuedConnection);
// Get the production of FBO textures started..
QMetaObject::invokeMethod(m_renderThread, "renderNext", Qt::QueuedConnection);
diff --git a/examples/quick/scenegraph/threadedanimation/spinner.cpp b/examples/quick/scenegraph/threadedanimation/spinner.cpp
index 04b91e5449..6fefc33f4d 100644
--- a/examples/quick/scenegraph/threadedanimation/spinner.cpp
+++ b/examples/quick/scenegraph/threadedanimation/spinner.cpp
@@ -49,8 +49,8 @@ public:
, m_spinning(false)
, m_window(window)
{
- connect(window, SIGNAL(beforeRendering()), this, SLOT(maybeRotate()));
- connect(window, SIGNAL(frameSwapped()), this, SLOT(maybeUpdate()));
+ connect(window, &QQuickWindow::beforeRendering, this, &SpinnerNode::maybeRotate);
+ connect(window, &QQuickWindow::frameSwapped, this, &SpinnerNode::maybeUpdate);
QImage image(":/scenegraph/threadedanimation/spinner.png");
m_texture = window->createTextureFromImage(image);
diff --git a/examples/quick/scenegraph/twotextureproviders/xorblender.cpp b/examples/quick/scenegraph/twotextureproviders/xorblender.cpp
index 384d118809..0dd035ffea 100644
--- a/examples/quick/scenegraph/twotextureproviders/xorblender.cpp
+++ b/examples/quick/scenegraph/twotextureproviders/xorblender.cpp
@@ -151,8 +151,8 @@ public:
// If this node is used as in a shader effect source, we need to propegate
// changes that will occur in this node outwards.
- connect(m_provider1, SIGNAL(textureChanged()), this, SLOT(textureChange()), Qt::DirectConnection);
- connect(m_provider2, SIGNAL(textureChanged()), this, SLOT(textureChange()), Qt::DirectConnection);
+ connect(m_provider1.data(), &QSGTextureProvider::textureChanged, this, &XorNode::textureChange, Qt::DirectConnection);
+ connect(m_provider2.data(), &QSGTextureProvider::textureChanged, this, &XorNode::textureChange, Qt::DirectConnection);
}
void preprocess() {
diff --git a/examples/quick/shared/shared.h b/examples/quick/shared/shared.h
index 4472b9bfbb..d8fb80b97e 100644
--- a/examples/quick/shared/shared.h
+++ b/examples/quick/shared/shared.h
@@ -55,9 +55,11 @@
f.setVersion(4, 4);\
view.setFormat(f);\
}\
- view.connect(view.engine(), SIGNAL(quit()), &app, SLOT(quit()));\
+ view.connect(view.engine(), &QQmlEngine::quit, &app, &QCoreApplication::quit);\
new QQmlFileSelector(view.engine(), &view);\
view.setSource(QUrl("qrc:///" #NAME ".qml")); \
+ if (view.status() == QQuickView::Error)\
+ return -1;\
view.setResizeMode(QQuickView::SizeRootObjectToView);\
if (QGuiApplication::platformName() == QLatin1String("qnx") || \
QGuiApplication::platformName() == QLatin1String("eglfs")) {\
diff --git a/examples/quick/text/doc/src/text.qdoc b/examples/quick/text/doc/src/text.qdoc
index 7ac33da563..ea6a786e8a 100644
--- a/examples/quick/text/doc/src/text.qdoc
+++ b/examples/quick/text/doc/src/text.qdoc
@@ -60,7 +60,7 @@
\section1 Available Fonts
- \e{Available Fonts} shows how to use the QML \l{QtQml::Qt}{Qt} global object
+ \e{Available Fonts} shows how to use the \l [QML] {Qt} global object
and a list view to display all the fonts available on the system.
The \l ListView type uses the list of fonts available as its model:
\snippet text/fonts/availableFonts.qml model
diff --git a/examples/quick/threading/threadedlistmodel/doc/src/threadedlistmodel.qdoc b/examples/quick/threading/threadedlistmodel/doc/src/threadedlistmodel.qdoc
index 68f0db9629..7e0a46139a 100644
--- a/examples/quick/threading/threadedlistmodel/doc/src/threadedlistmodel.qdoc
+++ b/examples/quick/threading/threadedlistmodel/doc/src/threadedlistmodel.qdoc
@@ -28,6 +28,8 @@
/*!
\title Threaded ListModel Example
\example threading/threadedlistmodel
+ \brief The Threaded ListModel example shows how to use a ListModel from multiple
+ threads using WorkerScript.
This example shows how to use a ListModel from multiple threads using
WorkerScript.
diff --git a/examples/quick/touchinteraction/doc/src/touchinteraction.qdoc b/examples/quick/touchinteraction/doc/src/touchinteraction.qdoc
index 760e14adca..e66d5c5654 100644
--- a/examples/quick/touchinteraction/doc/src/touchinteraction.qdoc
+++ b/examples/quick/touchinteraction/doc/src/touchinteraction.qdoc
@@ -36,7 +36,7 @@
\include examples-run.qdocinc
- \section1 Multipoint Flames
+ \section1 Multipoint Flames Example
\e{Multipoint Flames} demonstrates distinguishing different fingers in a
\l MultiPointTouchArea, by assigning a different colored flame to each touch
@@ -49,7 +49,7 @@
whether it is currently pressed, as follows:
\snippet touchinteraction/multipointtouch/multiflame.qml 1
- \section1 Bear-Whack
+ \section1 Bear-Whack Example
\e{Bear-Whack} demonstrates using \l MultiPointTouchArea to add multiple
finger support to a simple game. The interaction with the game
@@ -58,19 +58,19 @@
embedded into it:
\snippet touchinteraction/multipointtouch/content/AugmentedTouchPoint.qml 0
- \section1 Flick Resize
+ \section1 Flick Resize Example
\e{Flick Resize} uses a \l PinchArea to implement a \e{pinch-to-resize}
behavior. This is easily achieved by listening to the PinchArea signals and
responding to user input.
\snippet touchinteraction/pincharea/flickresize.qml 0
- \section1 Flickable
+ \section1 Flickable Example
\e Flickable is a simple example demonstrating the \l Flickable type.
\snippet touchinteraction/flickable/basic-flickable.qml 0
- \section1 Corkboards
+ \section1 Corkboards Example
\e Corkboards shows another use for \l Flickable, with QML types within the
flickable object that respond to mouse and keyboard interaction. This
diff --git a/examples/quick/tutorials/samegame/samegame4/content/samegame.js b/examples/quick/tutorials/samegame/samegame4/content/samegame.js
index 80b175d450..80b175d450 100755..100644
--- a/examples/quick/tutorials/samegame/samegame4/content/samegame.js
+++ b/examples/quick/tutorials/samegame/samegame4/content/samegame.js