aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/imports/calendar/doc/qtlabscalendar.qdocconf1
-rw-r--r--src/imports/calendar/doc/src/qtlabscalendar-index.qdoc2
-rw-r--r--src/imports/calendar/doc/src/qtlabscalendar-qmltypes.qdoc4
-rw-r--r--src/imports/calendar/plugins.qmltypes23
-rw-r--r--src/imports/controls/SplitView.qml55
-rw-r--r--src/imports/controls/controls.pri1
-rw-r--r--src/imports/controls/controls.pro2
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-splitview-custom.pngbin0 -> 383 bytes
-rw-r--r--src/imports/controls/doc/qtquickcontrols.qdocconf2
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-splitview-custom.qml57
-rw-r--r--src/imports/controls/doc/src/includes/qquickicon.qdocinc6
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-buttons.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc14
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-containers.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc28
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-default.qdoc8
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-delegates.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-deployment.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc71
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-environment.qdoc18
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-examples.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-fileselectors.qdoc8
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-focus.qdoc9
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-fusion.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-gettingstarted.qdoc5
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-guidelines.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-highdpi.qdoc7
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-icons.qdoc15
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc18
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-index.qdoc62
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-indicators.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-input.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-material.qdoc14
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-navigation.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-popups.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc12
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-separators.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc32
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc12
-rw-r--r--src/imports/controls/fusion/SplitView.qml56
-rw-r--r--src/imports/controls/fusion/dependencies.json7
-rw-r--r--src/imports/controls/fusion/fusion.pri1
-rw-r--r--src/imports/controls/fusion/fusion.pro4
-rw-r--r--src/imports/controls/fusion/plugins.qmltypes72
-rw-r--r--src/imports/controls/fusion/qquickfusionstyle.cpp2
-rw-r--r--src/imports/controls/imagine/SplitView.qml63
-rw-r--r--src/imports/controls/imagine/dependencies.json7
-rw-r--r--src/imports/controls/imagine/design/imagine.sketchbin293192 -> 164993 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-disabled.pngbin0 -> 93 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-disabled@2x.pngbin0 -> 99 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-disabled@3x.pngbin0 -> 112 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-disabled@4x.pngbin0 -> 130 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-hovered.pngbin0 -> 93 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-hovered@2x.pngbin0 -> 99 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-hovered@3x.pngbin0 -> 112 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-hovered@4x.pngbin0 -> 130 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-pressed.pngbin0 -> 93 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-pressed@2x.pngbin0 -> 99 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-pressed@3x.pngbin0 -> 112 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle-pressed@4x.pngbin0 -> 129 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle.pngbin0 -> 93 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle@2x.pngbin0 -> 99 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle@3x.pngbin0 -> 112 bytes
-rw-r--r--src/imports/controls/imagine/images/splitview-handle@4x.pngbin0 -> 130 bytes
-rw-r--r--src/imports/controls/imagine/imagine.pri1
-rw-r--r--src/imports/controls/imagine/imagine.pro4
-rw-r--r--src/imports/controls/imagine/plugins.qmltypes43
-rw-r--r--src/imports/controls/material/SplitView.qml74
-rw-r--r--src/imports/controls/material/dependencies.json7
-rw-r--r--src/imports/controls/material/material.pri1
-rw-r--r--src/imports/controls/material/material.pro4
-rw-r--r--src/imports/controls/material/plugins.qmltypes192
-rw-r--r--src/imports/controls/plugins.qmltypes1837
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp6
-rw-r--r--src/imports/controls/universal/SplitView.qml56
-rw-r--r--src/imports/controls/universal/dependencies.json7
-rw-r--r--src/imports/controls/universal/plugins.qmltypes82
-rw-r--r--src/imports/controls/universal/universal.pri1
-rw-r--r--src/imports/controls/universal/universal.pro4
-rw-r--r--src/imports/platform/doc/qtlabsplatform.qdocconf1
-rw-r--r--src/imports/platform/doc/src/qtlabsplatform-index.qdoc2
-rw-r--r--src/imports/platform/doc/src/qtlabsplatform-qmltypes.qdoc4
-rw-r--r--src/imports/platform/plugins.qmltypes35
-rw-r--r--src/imports/templates/doc/src/qtquicktemplates2-index.qdoc4
-rw-r--r--src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc2
-rw-r--r--src/imports/templates/plugins.qmltypes43
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp8
-rw-r--r--src/imports/templates/templates.pro2
-rw-r--r--src/quickcontrols2/qquickiconlabel.cpp2
-rw-r--r--src/quickcontrols2/qquickstyle.cpp18
-rw-r--r--src/quickcontrols2/qquicktumblerview.cpp15
-rw-r--r--src/quicktemplates2/qquickabstractbutton.cpp2
-rw-r--r--src/quicktemplates2/qquickapplicationwindow.cpp2
-rw-r--r--src/quicktemplates2/qquickbutton.cpp2
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp3
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp4
-rw-r--r--src/quicktemplates2/qquickicon.cpp28
-rw-r--r--src/quicktemplates2/qquickicon_p.h5
-rw-r--r--src/quicktemplates2/qquickitemdelegate.cpp2
-rw-r--r--src/quicktemplates2/qquickmenubar.cpp2
-rw-r--r--src/quicktemplates2/qquickmenuitem.cpp2
-rw-r--r--src/quicktemplates2/qquickpage.cpp2
-rw-r--r--src/quicktemplates2/qquickpane.cpp2
-rw-r--r--src/quicktemplates2/qquickrangeslider.cpp2
-rw-r--r--src/quicktemplates2/qquickscrollview.cpp2
-rw-r--r--src/quicktemplates2/qquickspinbox.cpp2
-rw-r--r--src/quicktemplates2/qquicksplitview.cpp2049
-rw-r--r--src/quicktemplates2/qquicksplitview_p.h218
-rw-r--r--src/quicktemplates2/qquicksplitview_p_p.h178
-rw-r--r--src/quicktemplates2/qquickstackview.cpp2
-rw-r--r--src/quicktemplates2/qquickswipeview.cpp2
-rw-r--r--src/quicktemplates2/qquicktabbar.cpp2
-rw-r--r--src/quicktemplates2/qquicktoolbutton.cpp2
-rw-r--r--src/quicktemplates2/qquicktumbler.cpp37
-rw-r--r--src/quicktemplates2/qquicktumbler_p_p.h2
-rw-r--r--src/quicktemplates2/quicktemplates2.pri2
116 files changed, 3689 insertions, 2062 deletions
diff --git a/src/imports/calendar/doc/qtlabscalendar.qdocconf b/src/imports/calendar/doc/qtlabscalendar.qdocconf
index 899dce21..9a88cb25 100644
--- a/src/imports/calendar/doc/qtlabscalendar.qdocconf
+++ b/src/imports/calendar/doc/qtlabscalendar.qdocconf
@@ -1,4 +1,5 @@
include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf)
project = QtLabsCalendar
description = Qt Labs Calendar Reference Documentation
diff --git a/src/imports/calendar/doc/src/qtlabscalendar-index.qdoc b/src/imports/calendar/doc/src/qtlabscalendar-index.qdoc
index 517dbdb1..065379ec 100644
--- a/src/imports/calendar/doc/src/qtlabscalendar-index.qdoc
+++ b/src/imports/calendar/doc/src/qtlabscalendar-index.qdoc
@@ -46,6 +46,6 @@
\list
\li \l{Qt Quick}
\li \l{Qt Quick Layouts}
- \li \l{Qt Quick Controls 2}
+ \li \l{Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/calendar/doc/src/qtlabscalendar-qmltypes.qdoc b/src/imports/calendar/doc/src/qtlabscalendar-qmltypes.qdoc
index 29b1a2c0..81abf52a 100644
--- a/src/imports/calendar/doc/src/qtlabscalendar-qmltypes.qdoc
+++ b/src/imports/calendar/doc/src/qtlabscalendar-qmltypes.qdoc
@@ -33,7 +33,7 @@
The \l{Qt Labs Calendar} module provides QML types for creating
calendars. These QML types work in conjunction with \l{Qt Quick} and
- \l{Qt Quick Controls 2}.
+ \l{Qt Quick Controls}.
The QML types can be imported into your application using the
following import statement in your .qml file:
@@ -51,7 +51,7 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 QML Types}
+ \li \l {Qt Quick Controls QML Types}
\endlist
\noautolist
diff --git a/src/imports/calendar/plugins.qmltypes b/src/imports/calendar/plugins.qmltypes
index ef9a5d49..76902876 100644
--- a/src/imports/calendar/plugins.qmltypes
+++ b/src/imports/calendar/plugins.qmltypes
@@ -7,7 +7,7 @@ import QtQuick.tooling 1.2
// 'qmlplugindump -nonrelocatable Qt.labs.calendar 1.0'
Module {
- dependencies: ["QtQuick 2.6"]
+ dependencies: ["QtQuick 2.12"]
Component {
name: "QQuickCalendar"
prototype: "QObject"
@@ -86,8 +86,29 @@ Module {
Property { name: "wheelEnabled"; type: "bool" }
Property { name: "background"; type: "QQuickItem"; isPointer: true }
Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
+ Property { name: "baselineOffset"; type: "double" }
Property { name: "palette"; revision: 3; type: "QPalette" }
+ Property { name: "horizontalPadding"; revision: 5; type: "double" }
+ Property { name: "verticalPadding"; revision: 5; type: "double" }
+ Property { name: "implicitContentWidth"; revision: 5; type: "double"; isReadonly: true }
+ Property { name: "implicitContentHeight"; revision: 5; type: "double"; isReadonly: true }
+ Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
+ Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
+ Property { name: "topInset"; revision: 5; type: "double" }
+ Property { name: "leftInset"; revision: 5; type: "double" }
+ Property { name: "rightInset"; revision: 5; type: "double" }
+ Property { name: "bottomInset"; revision: 5; type: "double" }
Signal { name: "paletteChanged"; revision: 3 }
+ Signal { name: "horizontalPaddingChanged"; revision: 5 }
+ Signal { name: "verticalPaddingChanged"; revision: 5 }
+ Signal { name: "implicitContentWidthChanged"; revision: 5 }
+ Signal { name: "implicitContentHeightChanged"; revision: 5 }
+ Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
+ Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
+ Signal { name: "topInsetChanged"; revision: 5 }
+ Signal { name: "leftInsetChanged"; revision: 5 }
+ Signal { name: "rightInsetChanged"; revision: 5 }
+ Signal { name: "bottomInsetChanged"; revision: 5 }
}
Component {
name: "QQuickDayOfWeekRow"
diff --git a/src/imports/controls/SplitView.qml b/src/imports/controls/SplitView.qml
new file mode 100644
index 00000000..9d37a83e
--- /dev/null
+++ b/src/imports/controls/SplitView.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Templates 2.13 as T
+import QtQuick.Controls 2.13
+import QtQuick.Controls.impl 2.13
+
+T.SplitView {
+ id: control
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ handle: Rectangle {
+ implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width
+ implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6
+ color: T.SplitHandle.pressed ? control.palette.mid
+ : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.button)
+ }
+}
diff --git a/src/imports/controls/controls.pri b/src/imports/controls/controls.pri
index 675fcf39..fbf5d075 100644
--- a/src/imports/controls/controls.pri
+++ b/src/imports/controls/controls.pri
@@ -53,6 +53,7 @@ QML_FILES += \
$$PWD/ScrollView.qml \
$$PWD/Slider.qml \
$$PWD/SpinBox.qml \
+ $$PWD/SplitView.qml \
$$PWD/StackView.qml \
$$PWD/SwipeDelegate.qml \
$$PWD/Switch.qml \
diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro
index db0d14ae..2aeaf9ab 100644
--- a/src/imports/controls/controls.pro
+++ b/src/imports/controls/controls.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2plugin
TARGETPATH = QtQuick/Controls.2
-IMPORT_VERSION = 2.5
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-splitview-custom.png b/src/imports/controls/doc/images/qtquickcontrols2-splitview-custom.png
new file mode 100644
index 00000000..7afd3ff8
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-splitview-custom.png
Binary files differ
diff --git a/src/imports/controls/doc/qtquickcontrols.qdocconf b/src/imports/controls/doc/qtquickcontrols.qdocconf
index fd921562..f6798f1f 100644
--- a/src/imports/controls/doc/qtquickcontrols.qdocconf
+++ b/src/imports/controls/doc/qtquickcontrols.qdocconf
@@ -1,4 +1,5 @@
include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf)
include(manifest-meta.qdocconf)
moduleheader = QtQuickControls2
@@ -8,7 +9,6 @@ description = Qt Quick Controls Reference Documentation
version = $QT_VERSION
qhp.projects = QtQuickControls
-moduleheader = QtQuickControls2
qhp.QtQuickControls.file = qtquickcontrols.qhp
qhp.QtQuickControls.namespace = org.qt-project.qtquickcontrols.$QT_VERSION_TAG
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-splitview-custom.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-splitview-custom.qml
new file mode 100644
index 00000000..96e8ad2f
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-splitview-custom.qml
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://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 https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Controls 2.13
+
+Item {
+ width: 200
+ height: 100
+
+ //! [1]
+ SplitView {
+ id: splitView
+ anchors.fill: parent
+
+ handle: Rectangle {
+ implicitWidth: 4
+ implicitHeight: 4
+ color: SplitHandle.pressed ? "#81e889"
+ : (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6")
+ }
+
+ Rectangle {
+ implicitWidth: 150
+ color: "#444"
+ }
+ Rectangle {
+ implicitWidth: 50
+ color: "#666"
+ }
+ }
+ //! [1]
+}
diff --git a/src/imports/controls/doc/src/includes/qquickicon.qdocinc b/src/imports/controls/doc/src/includes/qquickicon.qdocinc
index a6ab90bb..ba7cede9 100644
--- a/src/imports/controls/doc/src/includes/qquickicon.qdocinc
+++ b/src/imports/controls/doc/src/includes/qquickicon.qdocinc
@@ -38,5 +38,11 @@
The icon is tinted with the specified color, unless the color is
set to \c "transparent".
+
+\row
+ \li cache
+ \li This property specifies whether the icon should be cached.
+
+ The default value is true.
\endtable
//! [grouped-properties]
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-buttons.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-buttons.qdoc
index a1f2dd57..6a4c5926 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-buttons.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-buttons.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for button controls
- Qt Quick Controls 2 offers a selection of button-like controls.
+ Qt Quick Controls offers a selection of button-like controls.
\annotatedlist qtquickcontrols2-buttons
@@ -186,6 +186,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
index a846f607..8caa392f 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc
@@ -31,8 +31,8 @@
\title Qt Quick Controls Configuration File
\keyword Qt Quick Controls 2 Configuration File
- Qt Quick Controls 2 support a special configuration file, \c :/qtquickcontrols2.conf,
- that is built into an application's resources.
+ Qt Quick Controls support a special configuration file, \c qtquickcontrols2.conf,
+ which is built into an application's resources.
The configuration file can specify the preferred style and certain style-specific
attributes. The following example specifies that the preferred style is the \l {Material style}.
@@ -56,7 +56,7 @@
\endcode
It is possible to specify a custom location for the configuration file with
- the \l {Supported Environment Variables in Qt Quick Controls 2}
+ the \l {Supported Environment Variables in Qt Quick Controls}
{QT_QUICK_CONTROLS_CONF} environment variable.
\section1 Controls Section
@@ -174,7 +174,7 @@
\section1 Using the Configuration File in a Project
- In order to make it possible for Qt Quick Controls 2 to find the configuration file,
+ In order to make it possible for Qt Quick Controls to find the configuration file,
it must be built into application's resources using the \l {The Qt Resource System}.
Here's an example \c .qrc file:
@@ -186,7 +186,7 @@
</RCC>
\endcode
- \note Qt Quick Controls 2 uses a file selector to load the configuration file. It
+ \note Qt Quick Controls uses a file selector to load the configuration file. It
is possible to provide a different configuration file for different platforms and
locales. See \l QFileSelector documentation for more details.
@@ -200,7 +200,7 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
- \li \l{Supported Environment Variables in Qt Quick Controls 2}
+ \li \l{Styling Qt Quick Controls}
+ \li \l{Supported Environment Variables in Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-containers.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-containers.qdoc
index c4d62224..81e24c26 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-containers.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-containers.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for container controls
- Qt Quick Controls 2 offers a selection of container-like controls.
+ Qt Quick Controls offers a selection of container-like controls.
\annotatedlist qtquickcontrols2-containers
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc
index d50e4c83..cd06a456 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc
@@ -27,10 +27,11 @@
/*!
\page qtquickcontrols2-customize.html
- \title Customizing Qt Quick Controls 2
+ \keyword Customizing Qt Quick Controls 2
+ \title Customizing Qt Quick Controls
\brief A set of UI controls to create user interfaces in Qt Quick
- Qt Quick Controls 2 consist of a hierarchy (tree) of items. In order to
+ Qt Quick Controls consist of a hierarchy (tree) of items. In order to
provide a custom look and feel, the default QML implementation of each
item can be replaced with a custom one.
@@ -119,7 +120,7 @@
\endqml
As you now have the \c MyControls namespace, you can name the controls after
- their actual counterparts in the Qt Quick Controls 2 module. You can repeat
+ their actual counterparts in the Qt Quick Controls module. You can repeat
this process for any control that you wish to add.
An added benefit of these three methods is that it's not necessary to
@@ -132,9 +133,9 @@
\section2 Definition of a Style
- In Qt Quick Controls 2, a style is essentially an interchangeable set of
+ In Qt Quick Controls, a style is essentially an interchangeable set of
QML files within a single directory. There are three requirements for a style
- to be \l {Using Styles in Qt Quick Controls 2}{usable}:
+ to be \l {Using Styles in Qt Quick Controls}{usable}:
\list
\li At least one QML file whose name matches a control (for example,
@@ -143,7 +144,7 @@
{QtQuick.Templates} import as the root item. For example,
Button.qml must contain a Button template as its root item.
- If we instead used the corresponding type from the \l {Qt Quick Controls 2}
+ If we instead used the corresponding type from the \l {Qt Quick Controls}
{QtQuick.Controls} import as we did in the previous section, it would not work:
the control we were defining would try to derive from itself.
\li The files must be in a directory in the filesystem or in the
@@ -176,7 +177,7 @@
Using the approach above, it is possible to preview a custom style
in \l {Using Qt Quick Designer}{Qt Quick Designer}. In order to do so,
ensure that the project has a
- \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf} file,
+ \l {Qt Quick Controls Configuration File}{qtquickcontrols2.conf} file,
and that the following entry exists:
\badcode
@@ -185,7 +186,7 @@
\endcode
For more information, take a look at the
- \l {Qt Quick Controls 2 - Flat Style}{Flat Style example}.
+ \l {Qt Quick Controls - Flat Style}{Flat Style example}.
\section2 Style-specific C++ Extensions
@@ -390,7 +391,7 @@
With that in place, we can run our example. To tell the application to
use our new style, we pass \c {-style :/mystyle} as an application
- argument, but there are \l {Using Styles in Qt Quick Controls 2}{many
+ argument, but there are \l {Using Styles in Qt Quick Controls}{many
ways} to specify the style to use.
The end result:
@@ -736,6 +737,15 @@
\snippet qtquickcontrols2-spinbox-custom.qml file
+ \section2 Customizing SplitView
+
+ SplitView consists of a visual \l {SplitView::handle}{handle} delegate.
+
+ \image qtquickcontrols2-splitview-custom.png
+
+ \snippet qtquickcontrols2-splitview-custom.qml 1
+
+
\section2 Customizing StackView
StackView can have a visual \l {Control::background}{background}
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
index ad85b9ec..779f3241 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-default.qdoc
@@ -32,14 +32,14 @@
The Default style is a basic all-round style.
The Default style is a simple and light-weight style that offers the maximum
- performance for Qt Quick Controls 2. It is built with a minimal amount of Qt
+ performance for Qt Quick Controls. It is built with a minimal amount of Qt
Quick primitives, and keeps animations and transitions to the minimum.
\image qtquickcontrols2-default.png
- The style is selected by default when running Qt Quick Controls 2 applications.
+ The style is selected by default when running Qt Quick Controls applications.
It is built into the module's resources, so by default it is shipped with
- any application that depends on the Qt Quick Controls 2 module
+ any application that depends on the Qt Quick Controls module
\note The Default style is used as a fallback for other styles. If a style
does not implement a certain control, the Default style implementation of
@@ -50,6 +50,6 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
+ \li \l{Styling Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-delegates.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-delegates.qdoc
index ebb4b6b2..bea87abf 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-delegates.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-delegates.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for delegate controls
- Qt Quick Controls 2 offers a selection of controls that are used as
+ Qt Quick Controls offers a selection of controls that are used as
delegates in views.
\annotatedlist qtquickcontrols2-delegates
@@ -74,6 +74,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-deployment.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-deployment.qdoc
index fff895b4..7b27c9d5 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-deployment.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-deployment.qdoc
@@ -27,9 +27,9 @@
/*!
\page qtquickcontrols2-deployment.html
- \title Deploying Qt Quick Controls 2 Applications
+ \title Deploying Qt Quick Controls Applications
- Deployment of Qt Quick Controls 2 applications is very similar to
+ Deployment of Qt Quick Controls applications is very similar to
deployment of other types of Qt applications. However, there are a few
factors to consider.
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc
index 0b09edf6..bfb27dcb 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc
@@ -27,7 +27,7 @@
/*!
\page qtquickcontrols2-differences.html
- \title Differences between Qt Quick Controls 1
+ \title Differences with Qt Quick Controls 1
Qt Quick Controls 1 was originally developed to support desktop platforms,
with mobile and embedded support coming shortly afterwards. They have a
@@ -36,7 +36,7 @@
or platform-independent style.
On embedded systems, where the hardware has limited resources, this approach
- can be inefficient. Qt Quick Controls 2 was designed to solve this problem,
+ can be inefficient. Qt Quick Controls was designed to solve this problem,
using
\l {https://blog.qt.io/blog/2015/03/31/qt-quick-controls-for-embedded/}{benchmarks}
to guide the development.
@@ -58,7 +58,7 @@
Read more about implementing a style plugin
\l {Creating a Custom Style}{here}.
- In Qt Quick Controls 2, styles no longer provide components that are
+ In Qt Quick Controls, styles no longer provide components that are
dynamically instantiated by controls, but controls themselves consist of
item delegates that can be replaced. In effect, this means that delegates
are Qt Quick items that are instantiated on the spot, as properties of the
@@ -89,7 +89,7 @@
}
\endqml
- The API of Qt Quick Controls 2 aims to be clean and simple. Common
+ The API of Qt Quick Controls aims to be clean and simple. Common
operations are easy, and more advanced ones are liberally documented with
snippets that can be copied into your code.
@@ -99,7 +99,7 @@
\header
\li
\li Qt Quick Controls 1
- \li Qt Quick Controls 2
+ \li Qt Quick Controls
\row
\li Stylable delegates
\li Yes
@@ -138,7 +138,7 @@
\section2 Porting Qt Quick Controls 1 Code
- The API of Qt Quick Controls 2 is very similar to Qt Quick Controls 1, but it
+ The API of Qt Quick Controls is very similar to Qt Quick Controls 1, but it
does come with some changes necessary to facilitate the improvements. The
majority of changes are to do with styling; all of a control's delegates
are now accessible in the control itself, instead of in a separate style
@@ -156,7 +156,7 @@
}
\endqml
- To style a button in Qt Quick Controls 2:
+ To style a button in Qt Quick Controls:
\qml
Button {
@@ -189,7 +189,7 @@
The first column lists all types available in \l {Qt Quick Controls 1},
\l {Qt Quick Dialogs}, and \l {Qt Quick Extras}.
- The second column documents the respective type in Qt Quick Controls 2.
+ The second column documents the respective type in Qt Quick Controls.
When a direct alternative is not available, the third column contains
an alternative that provides related functionality. The last column
contains some remarks about the differences between the types in the
@@ -198,7 +198,7 @@
\table
\header
\li Qt Quick Controls 1
- \li Qt Quick Controls 2
+ \li Qt Quick Controls
\li Alternatives
\li Remarks
\row
@@ -245,9 +245,9 @@
\li \l [QML QtQuickControls1] {ExclusiveGroup}
\li \mdash
\li \l [QML QtQuickControls2] {ActionGroup},\br
- \l [QML QtQuickControls2] {ButtonGroup} \br\sup {(Qt Quick Controls 2)}
+ \l [QML QtQuickControls2] {ButtonGroup} \br\sup {(Qt Quick Controls)}
\li \list
- \li \b {Qt Quick Controls 2}: \c ActionGroup and \c ButtonGroup offer similar functionality.
+ \li \b {Qt Quick Controls}: \c ActionGroup and \c ButtonGroup offer similar functionality.
\endlist
\row
\li \l [QML QtQuickControls1] {GroupBox}
@@ -270,7 +270,7 @@
supports traditional desktop style cascading submenus, but does not
work on Embedded Linux because \l EGLFS does not support multiple
top-level windows.
- \li \b {Qt Quick Controls 2}: \c Menu is a non-native \c Item-based popup
+ \li \b {Qt Quick Controls}: \c Menu is a non-native \c Item-based popup
that is stacked above the application content. Due to this, menu popups
are restricted within window boundaries. \c Menu is fully customizable
using QML and Qt Quick, and allows adding any \c Items. Traditional
@@ -288,7 +288,7 @@
\li \b {Qt Quick Controls 1}: \c MenuBar is native on platforms where an
implementation is available in the Qt Platform Abstraction Layer. Other
platforms use a QML-based menubar item stacked at the top of the window.
- \li \b {Qt Quick Controls 2}: \c MenuBar is a non-native QML-based menubar
+ \li \b {Qt Quick Controls}: \c MenuBar is a non-native QML-based menubar
that can be fully customized using QML and Qt Quick.
\li \b {Qt Labs Platform}: \c MenuBar is an \e experimental native menubar.
It is only available on platforms where a native implementation is available
@@ -305,7 +305,7 @@
\li \b {Qt Quick Controls 1}: \c MenuItem and \c MenuSeparator are native
on platforms where an implementation is available in the Qt Platform
Abstraction Layer. Other platforms use QML-based menu items and separators.
- \li \b {Qt Quick Controls 2}: \c MenuItem and \c MenuSeparator are a non-native
+ \li \b {Qt Quick Controls}: \c MenuItem and \c MenuSeparator are a non-native
QML-based menu items and separators that can be fully customized using QML
and Qt Quick.
\li \b {Qt Labs Platform}: \c MenuItem and \c MenuSeparator are \e experimental
@@ -338,9 +338,19 @@
\li
\row
\li \l [QML QtQuickControls1] {SplitView}
- \li \mdash
- \li
+ \li \l [QML QtQuickControls2] {SplitView}
\li
+ \li \list
+ \li \b {Qt Quick Controls 1}: Uses \l Layout attached properties
+ to specify size hints.
+ \li \b {Qt Quick Controls}: Uses dedicated
+ \l [QML QtQuickControls2] {SplitView} attached properties
+ to specify size hints.
+ Allows \l {SplitView::saveState()}{saving} and
+ \l {SplitView::restoreState()}{restoring} state.
+ Separate attached \l SplitHandle API for managing split
+ handles.
+ \endlist
\row
\li \l [QML QtQuickControls1] {StackView},\br
\l [QML QtQuickControls1] {StackViewDelegate},\br
@@ -348,15 +358,15 @@
\li \l [QML QtQuickControls2] {StackView}
\li
\li \list
- \li \b {Qt Quick Controls 2}: \c StackView provides customizable transitions
+ \li \b {Qt Quick Controls}: \c StackView provides customizable transitions
and attached properties via a single \c StackView type.
\endlist
\row
\li \l [QML QtQuickControls1] {StatusBar}
\li \mdash
- \li \l [QML QtQuickControls2] {ToolBar} \br\sup {(Qt Quick Controls 2)}
+ \li \l [QML QtQuickControls2] {ToolBar} \br\sup {(Qt Quick Controls)}
\li \list
- \li \b {Qt Quick Controls 2}: \c ApplicationWindow allows assigning any
+ \li \b {Qt Quick Controls}: \c ApplicationWindow allows assigning any
item or control, such as \c ToolBar, as a header or footer.
\endlist
\row
@@ -369,15 +379,16 @@
\l [QML QtQuickControls1] {Tab}
\li \mdash
\li \l [QML QtQuickControls2] {TabBar},\br
- \l [QML QtQuickControls2] {TabButton} \br\sup {(Qt Quick Controls 2)}
+ \l [QML QtQuickControls2] {TabButton} \br\sup {(Qt Quick Controls)}
\li \list
- \li \b {Qt Quick Controls 2}: \c TabBar and \c TabButton offer similar
+ \li \b {Qt Quick Controls}: \c TabBar and \c TabButton offer similar
functionality, and can be used to build tabbed views.
\endlist
\row
\li \l [QML QtQuickControls1] {TableView}
\li \mdash
- \li
+ \li The new \l [QML QtQuick] {TableView} can be found in the Qt Quick
+ module.
\li
\row
\li \l [QML QtQuickControls1] {TextArea}
@@ -386,7 +397,7 @@
\li \list
\li \b {Qt Quick Controls 1}: \c TextArea inherits \c ScrollView and is therefore
always a scrollable editor.
- \li \b {Qt Quick Controls 2}: \c TextArea is a simpler multi-line editor that can
+ \li \b {Qt Quick Controls}: \c TextArea is a simpler multi-line editor that can
be optionally attached to a \c Flickable to provide scrolling functionality.
This allows using \c TextArea in a scrollable page without having two nested
scrollable areas, which can be problematic and cause usability issues.
@@ -414,7 +425,7 @@
\header
\li Qt Quick Dialogs
- \li Qt Quick Controls 2
+ \li Qt Quick Controls
\li Alternatives
\li Remarks
\row
@@ -424,7 +435,7 @@
\li \list
\li \b {Qt Quick Dialogs}: \c Dialog is either a top-level window or an \c Item-based popup
depending on whether the underlying platform supports multiple top-level windows.
- \li \b {Qt Quick Controls 2}: \c Dialog is not a top-level window, but an \c Item-based
+ \li \b {Qt Quick Controls}: \c Dialog is not a top-level window, but an \c Item-based
popup that is stacked above the application content. Due to this, dialogs are restricted
within window boundaries.
\endlist
@@ -451,7 +462,7 @@
\header
\li Qt Quick Extras
- \li Qt Quick Controls 2
+ \li Qt Quick Controls
\li Alternatives
\li Remarks
\row
@@ -501,14 +512,14 @@
\li
\li \list
\li \b {Qt Quick Extras}: \c Tumbler can consist of multiple columns.
- \li \b {Qt Quick Controls 2}: \c Tumbler presents a single spinnable wheel.
+ \li \b {Qt Quick Controls}: \c Tumbler presents a single spinnable wheel.
Multiple columns can be created by placing multiple \c Tumblers next
to each other.
\endlist
\header
\li No Predecessor
- \li Qt Quick Controls 2
+ \li Qt Quick Controls
\li Alternatives
\li Remarks
\row
@@ -661,7 +672,7 @@
\li \list
\li \b {Qt Quick Controls 1}: \c Button and \c Action have built-in
Qt Widgets-based tooltips.
- \li \b {Qt Quick Controls 2}: \c ToolTip can be attached to any \c Item.
+ \li \b {Qt Quick Controls}: \c ToolTip can be attached to any \c Item.
\endlist
\endtable
@@ -669,7 +680,7 @@
\list
\li \l{Qt Quick}
- \li \l{Qt Quick Controls 2 QML Types}
+ \li \l{Qt Quick Controls QML Types}
\li \l{Qt Quick Controls 1 QML Types}
\li \l{Qt Quick Extras QML Types}
\li \l{Qt Labs Calendar QML Types}
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-environment.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-environment.qdoc
index 39ee005b..37be7b4c 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-environment.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-environment.qdoc
@@ -27,9 +27,9 @@
/*!
\page qtquickcontrols2-environment.html
- \title Supported Environment Variables in Qt Quick Controls 2
+ \title Supported Environment Variables in Qt Quick Controls
- This page contains a list of all environment variables that Qt Quick Controls 2
+ This page contains a list of all environment variables that Qt Quick Controls
supports. The environment variables are primarily meant for testing purposes, but
they can also be used to set system-wide defaults.
@@ -39,7 +39,7 @@
\li Description
\row
\li \c QT_QUICK_CONTROLS_STYLE
- \li Specifies the default \l {Styling Qt Quick Controls 2}{Qt Quick Controls 2 style}.
+ \li Specifies the default \l {Styling Qt Quick Controls}{Qt Quick Controls style}.
The value can be either one of the built-in styles, for example \c "Material",
or the path to a custom style such as \c ":/mystyle".
\row
@@ -48,18 +48,18 @@
The value can be one of the built-in styles, for example \c "Material",
\row
\li \c QT_QUICK_CONTROLS_STYLE_PATH
- \li Specifies a list of additional paths that are used to lookup \l {Styling Qt Quick Controls 2}
- {Qt Quick Controls 2 styles}. Multiple path entries must be \l {QDir::listSeparator}{separated}
+ \li Specifies a list of additional paths that are used to lookup \l {Styling Qt Quick Controls}
+ {Qt Quick Controls styles}. Multiple path entries must be \l {QDir::listSeparator}{separated}
by \c ':' under Unix and \c ';' under Windows. By default, styles are looked up from
\c $QML2_IMPORT_PATH/QtQuick/Controls.2.
\row
\li \c QT_QUICK_CONTROLS_CONF
- \li Specifies the location of the \l {Qt Quick Controls 2 configuration file}.
+ \li Specifies the location of the \l {Qt Quick Controls configuration file}.
By default, the configuration file is loaded from the application's
resources in \c ":/qtquickcontrols2.conf".
\row
\li \c QT_QUICK_CONTROLS_HOVER_ENABLED
- \li Specifies whether Qt Quick Controls 2 use \l {Control::hoverEnabled}{hover effects}.
+ \li Specifies whether Qt Quick Controls use \l {Control::hoverEnabled}{hover effects}.
The value can be set to \c 0 or \c 1 to disable or enable hover effects, respectively.
\endtable
@@ -78,7 +78,7 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
- \li \l{Qt Quick Controls 2 Configuration File}
+ \li \l{Styling Qt Quick Controls}
+ \li \l{Qt Quick Controls Configuration File}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-examples.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-examples.qdoc
index b828f32c..2924114f 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-examples.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-examples.qdoc
@@ -31,7 +31,7 @@
\keyword Qt Quick Controls Examples
\title Qt Quick Controls Examples
\keyword Qt Quick Controls 2 Examples
- \brief A collection of examples for \l {Qt Quick Controls 2}
+ \brief A collection of examples for \l {Qt Quick Controls}
- These examples demonstrate creating user interfaces using \l {Qt Quick Controls 2}.
+ These examples demonstrate creating user interfaces using \l {Qt Quick Controls}.
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-fileselectors.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-fileselectors.qdoc
index cfcfa149..d73d1abe 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-fileselectors.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-fileselectors.qdoc
@@ -27,11 +27,11 @@
/*!
\page qtquickcontrols2-fileselectors.html
- \title Using File Selectors with Qt Quick Controls 2
+ \title Using File Selectors with Qt Quick Controls
\l {QFileSelector}{File selectors} provide a convenient way of selecting
file variants. Qt offers the platform name and the locale as built-in
- selectors. Qt Quick Controls 2 extends the built-in selectors with the name
+ selectors. Qt Quick Controls extends the built-in selectors with the name
(lowercase) of the style that an application is running with.
By using file selectors, style-specific tweaks can be applied without
@@ -41,7 +41,7 @@
to some code duplication, but on the other hand, cuts the aforementioned
hard dependency to the style, and leads to simpler and more efficient
QML code. The same technique is used to implement the \l {Styling Qt
- Quick Controls 2}{Qt Quick Controls 2 styles}.
+ Quick Controls}{Qt Quick Controls styles}.
The following example demonstrates a custom rounded button that has a
styled drop shadow in the \l {Material Style}{Material style}, and looks
@@ -136,6 +136,6 @@
\list
\li \l {QFileSelector}
\li \l {QQmlFileSelector}
- \li \l {Styling Qt Quick Controls 2}
+ \li \l {Styling Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-focus.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-focus.qdoc
index 7883db71..77bc9883 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-focus.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-focus.qdoc
@@ -27,10 +27,11 @@
/*!
\page qtquickcontrols2-focus.html
- \title Focus Management in Qt Quick Controls 2
- \brief Overview of focus handling with Qt Quick Controls 2
+ \keyword Focus Management in Qt Quick Controls 2
+ \title Focus Management in Qt Quick Controls
+ \brief Overview of focus handling with Qt Quick Controls
- Qt Quick Controls 2 follows the standard
+ Qt Quick Controls follows the standard
\l {Keyboard Focus in Qt Quick}{Qt Quick focus system}, while also
providing some added convenience. For example, the
\l {Control::}{focusPolicy} property can be used to control the ways in
@@ -38,7 +39,7 @@
\section1 Focus Scope Controls
- Qt Quick Controls 2 offers a selection of controls that act as
+ Qt Quick Controls offers a selection of controls that act as
\l {Acquiring Focus and Focus Scopes}{focus scopes}:
\annotatedlist qtquickcontrols2-focusscopes
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-fusion.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-fusion.qdoc
index 043aaed2..135cae71 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-fusion.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-fusion.qdoc
@@ -38,7 +38,7 @@
\image qtquickcontrols2-fusion.png
To run an application with the Fusion style, see
- \l {Using Styles in Qt Quick Controls 2}.
+ \l {Using Styles in Qt Quick Controls}.
\note The Fusion style is not a native desktop style. The style runs on any
platform, and looks similar everywhere. Minor differences may occur due to
@@ -88,6 +88,6 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
+ \li \l{Styling Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-gettingstarted.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-gettingstarted.qdoc
index fecad927..22187bf4 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-gettingstarted.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-gettingstarted.qdoc
@@ -27,7 +27,8 @@
/*!
\page qtquickcontrols2-gettingstarted.html
- \title Getting Started with Qt Quick Controls 2
+ \keyword Getting Started with Qt Quick Controls 2
+ \title Getting Started with Qt Quick Controls
A basic example of a QML file that makes use of controls is shown here:
@@ -54,7 +55,7 @@
C++ application, doing this means you can only set window properties from
C++.
- With Qt Quick Controls 2, declare an ApplicationWindow as the root item of
+ With Qt Quick Controls, declare an ApplicationWindow as the root item of
your application and launch it by using QQmlApplicationEngine instead.
This ensures that you can control top level window properties from QML.
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-guidelines.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-guidelines.qdoc
index 034ed0f9..83d6db93 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-guidelines.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-guidelines.qdoc
@@ -31,7 +31,7 @@
\title Qt Quick Controls Guidelines
\keyword Qt Quick Controls 2 Guidelines
- Qt Quick Controls 2 offers a selection of controls that can be used to
+ Qt Quick Controls offers a selection of controls that can be used to
build complete interfaces in Qt Quick.
Below you will find practical guidelines on how and when to use
@@ -41,6 +41,6 @@
\section1 Related Information
\list
- \li \l{Qt Quick Controls 2 QML Types}{All Qt Quick Controls 2 QML Types}
+ \li \l{Qt Quick Controls QML Types}{All Qt Quick Controls QML Types}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-highdpi.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-highdpi.qdoc
index 474894f5..f0440e4f 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-highdpi.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-highdpi.qdoc
@@ -27,9 +27,10 @@
/*!
\page qtquickcontrols2-highdpi.html
- \title High-DPI Support in Qt Quick Controls 2
+ \keyword High-DPI Support in Qt Quick Controlsi 2
+ \title High-DPI Support in Qt Quick Controls
- Qt Quick Controls 2 support Qt's cross-platform high-DPI scaling introduced in Qt 5.6.
+ Qt Quick Controls support Qt's cross-platform high-DPI scaling introduced in Qt 5.6.
The feature is opt-in, and can be enabled by setting the \c Qt::AA_EnableHighDpiScaling
application attribute in C++ before QGuiApplication is constructed:
@@ -52,7 +53,7 @@
\warning \l {Qt Quick Controls}{Qt Quick Controls 1.x} are not compatible with Qt's
automatic high-DPI scaling. There is currently no available solution for high-DPI
- support in applications wishing to mix Qt Quick Controls and Qt Quick Controls 2.
+ support in applications wishing to mix Qt Quick Controls and Qt Quick Controls.
\section1 Related Information
\list
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-icons.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-icons.qdoc
index 5e62a2ce..f8cb1f52 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-icons.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-icons.qdoc
@@ -27,11 +27,12 @@
/*!
\page qtquickcontrols2-icons.html
- \title Icons in Qt Quick Controls 2
+ \keyword Icons in Qt Quick Controls 2
+ \title Icons in Qt Quick Controls
- Qt Quick Controls 2.3 (Qt 5.10) introduced built-in support for icons. Buttons,
- item delegates, and menu items are now capable of presenting an icon in addition
- to a text label.
+ Qt Quick Controls comes with support for icons since Qt 5.10. This means,
+ Buttons, item delegates, and menu items are now capable of presenting an
+ icon in addition to a text label.
\section1 Using Icons
@@ -58,7 +59,7 @@
}
\endcode
- Each \l {Styling Qt Quick Controls 2}{Qt Quick Controls 2 style} requests a
+ Each \l {Styling Qt Quick Controls}{Qt Quick Controls 2 style} requests a
default icon size and color according to their guidelines, but it is possible
to override these by setting the \c icon.width, \c icon.height, and \c icon.color
properties.
@@ -159,11 +160,11 @@
}
\endcode
- The \l {Qt Quick Controls 2 - Gallery}{Gallery example} and \l {Qt Quick Controls 2 - Wearable Demo}
+ The \l {Qt Quick Controls - Gallery}{Gallery example} and \l {Qt Quick Controls 2 - Wearable Demo}
{Wearable Demo} provide complete runnable applications with a bundled icon theme.
\section1 Related Information
\list
- \li \l {High-DPI Support in Qt Quick Controls 2}
+ \li \l {High-DPI Support in Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
index 2a9f1c5d..6e15762d 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
@@ -50,7 +50,7 @@
\caption The Imagine style with the default images
To run an application with the Imagine style, see
- \l {Using Styles in Qt Quick Controls 2}.
+ \l {Using Styles in Qt Quick Controls}.
\section2 File Names
@@ -2387,7 +2387,7 @@
See Sketch's \l {https://sketchapp.com/docs/exporting/}{Exporting} documentation.
- Qt Quick Controls 2 also provides a
+ Qt Quick Controls also provides a
\l {http://code.qt.io/cgit/qt/qtquickcontrols2.git/tree/src/imports/controls/imagine/design}
{plugin} for Sketch that automatically fixes the thickness of the 9-patch lines
after the assets are exported. To install this file, double-click on it.
@@ -2463,7 +2463,7 @@
\include qquickimaginestyle.qdocinc conf
- See \l {Qt Quick Controls 2 Configuration File} for more details about the
+ See \l {Qt Quick Controls Configuration File} for more details about the
configuration file.
\section4 Environment Variables
@@ -2471,7 +2471,7 @@
\include qquickimaginestyle.qdocinc env
- See \l {Supported Environment Variables in Qt Quick Controls 2} for the full
+ See \l {Supported Environment Variables in Qt Quick Controls} for the full
list of supported environment variables.
\section3 Palette
@@ -2499,11 +2499,11 @@
If the Imagine style is imported in a QML file that is always loaded, the
Imagine style must be deployed with the application in order to be able
to run the application regardless of which style the application is run with.
- By using \l {Using File Selectors with Qt Quick Controls 2}{file selectors},
+ By using \l {Using File Selectors with Qt Quick Controls}{file selectors},
style-specific tweaks can be applied without creating a hard dependency to
a style.
- \b {See also} \l {Styling Qt Quick Controls 2}
+ \b {See also} \l {Styling Qt Quick Controls}
\section1 Attached Property Documentation
@@ -2522,8 +2522,8 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
- \li \l{Qt Quick Controls 2 - Imagine Style Example: Automotive}{Automotive Example}
- \li \l{Qt Quick Controls 2 - Imagine Style Example: Music Player}{Music Player Example}
+ \li \l{Styling Qt Quick Controls}
+ \li \l{Qt Quick Controls - Imagine Style Example: Automotive}{Automotive Example}
+ \li \l{Qt Quick Controls - Imagine Style Example: Music Player}{Music Player Example}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
index a76eca6a..395f3b36 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
@@ -32,25 +32,25 @@
\brief Provides a set of UI controls for Qt Quick.
- Qt Quick Controls 2 provides a set of controls that can be used
+ Qt Quick Controls provides a set of controls that can be used
to build complete interfaces in Qt Quick. The module was introduced
in Qt 5.7.
\image qtquickcontrols2-styles.png
- Qt Quick Controls 2 comes with a selection customizable styles.
- See \l {Styling Qt Quick Controls 2} for more details.
+ Qt Quick Controls comes with a selection customizable styles.
+ See \l {Styling Qt Quick Controls} for more details.
\section1 Prerequisites
- The \l{Qt Quick Controls 2 QML Types}{QML types} can be imported into your
+ The \l{Qt Quick Controls QML Types}{QML types} can be imported into your
application using the following import statement in your \c {.qml} file:
\code \QtMinorVersion
import QtQuick.Controls 2.\1
\endcode
- The \l{Qt Quick Controls 2 C++ Classes}{C++ classes} can be included into
+ The \l{Qt Quick Controls C++ Classes}{C++ classes} can be included into
your application using the following include statement:
\code
@@ -64,12 +64,12 @@
QT += quickcontrols2
\endcode
- For more details, see \l {Getting Started with Qt Quick Controls 2}.
+ For more details, see \l {Getting Started with Qt Quick Controls}.
\section2 Building From Source
When building from source, ensure that the \l {Qt Graphical Effects} module
- is also built, as Qt Quick Controls 2 requires it.
+ is also built, as Qt Quick Controls requires it.
The \l {Qt Image Formats} module is recommended, but not
required. It provides support for the \c {.webp} format used by the
@@ -77,8 +77,8 @@
\section1 Versions
- Qt Quick Controls 2.0 was introduced in Qt 5.7. Subsequent minor Qt releases
- increment the import version of the Qt Quick Controls 2 modules by one,
+ Qt Quick Controls.0 was introduced in Qt 5.7. Subsequent minor Qt releases
+ increment the import version of the Qt Quick Controls modules by one,
until Qt 5.12, where the import versions match Qt's minor version. The
experimental Qt Labs modules use import version 1.0.
@@ -86,7 +86,7 @@
\header
\li \c Qt
\li \l {Qt Quick QML Types}{\c QtQuick}
- \li \l {Qt Quick Controls 2 QML Types}{\c QtQuick.Controls},\br
+ \li \l {Qt Quick Controls QML Types}{\c QtQuick.Controls},\br
\l {Material Style}{\c QtQuick.Controls.Material},\br
\l {Universal Style}{\c QtQuick.Controls.Universal},\br
\l {Qt Quick Templates 2 QML Types}{\c QtQuick.Templates}
@@ -131,13 +131,13 @@
\section1 License and Attributions
- Qt Quick Controls 2 is available under commercial licenses from \l{The Qt Company}.
+ Qt Quick Controls is available under commercial licenses from \l{The Qt Company}.
In addition, it is available under the
\l{GNU Lesser General Public License, version 3}, or
the \l{GNU General Public License, version 2}.
See \l{Qt Licensing} for further details.
- Furthermore Qt Quick Controls 2 potentially contains third party
+ Furthermore Qt Quick Controls potentially contains third party
modules under following permissive licenses:
\generatelist{groupsbymodule attributions-qtquickcontrols}
@@ -145,35 +145,35 @@
\section1 Topics
\list
- \li \l{Qt Quick Controls 2 Guidelines}{Guidelines}
- \li \l{Styling Qt Quick Controls 2}{Styling}
- \li \l{Icons in Qt Quick Controls 2}{Icons}
- \li \l{Customizing Qt Quick Controls 2}{Customization}
- \li \l{High-DPI Support in Qt Quick Controls 2}{High-DPI Support}
- \li \l{Using File Selectors with Qt Quick Controls 2}{Using File Selectors}
- \li \l{Deploying Qt Quick Controls 2 Applications}{Deployment}
- \li \l{Qt Quick Controls 2 Configuration File}{Configuration File}
- \li \l{Supported Environment Variables in Qt Quick Controls 2}{Environment Variables}
- \li \l{Differences between Qt Quick Controls 1}
+ \li \l{Qt Quick Controls Guidelines}{Guidelines}
+ \li \l{Styling Qt Quick Controls}{Styling}
+ \li \l{Icons in Qt Quick Controls}{Icons}
+ \li \l{Customizing Qt Quick Controls}{Customization}
+ \li \l{High-DPI Support in Qt Quick Controls}{High-DPI Support}
+ \li \l{Using File Selectors with Qt Quick Controls}{Using File Selectors}
+ \li \l{Deploying Qt Quick Controls Applications}{Deployment}
+ \li \l{Qt Quick Controls Configuration File}{Configuration File}
+ \li \l{Supported Environment Variables in Qt Quick Controls}{Environment Variables}
+ \li \l{Differences with Qt Quick Controls 1}
\endlist
\section1 Reference
\list
- \li \l{Qt Quick Controls 2 QML Types}{QML Types}
- \li \l{Qt Quick Controls 2 C++ Classes}{C++ Classes}
+ \li \l{Qt Quick Controls QML Types}{QML Types}
+ \li \l{Qt Quick Controls C++ Classes}{C++ Classes}
\endlist
\section1 Examples
\list
- \li \l{Qt Quick Controls 2 - Gallery}{Gallery}
- \li \l{Qt Quick Controls 2 - Chat Tutorial}{Chat Tutorial}
- \li \l{Qt Quick Controls 2 - Text Editor}{Text Editor}
- \li \l{Qt Quick Controls 2 - Wearable Demo}{Wearable Demo}
- \li \l{Qt Quick Controls 2 - Imagine Style Example: Automotive}{Automotive Example}
- \li \l{Qt Quick Controls 2 - Imagine Style Example: Music Player}{Music Player Example}
- \li \l{Qt Quick Controls 2 Examples}{All Examples}
+ \li \l{Qt Quick Controls - Gallery}{Gallery}
+ \li \l{Qt Quick Controls - Chat Tutorial}{Chat Tutorial}
+ \li \l{Qt Quick Controls - Text Editor}{Text Editor}
+ \li \l{Qt Quick Controls - Wearable Demo}{Wearable Demo}
+ \li \l{Qt Quick Controls - Imagine Style Example: Automotive}{Automotive Example}
+ \li \l{Qt Quick Controls - Imagine Style Example: Music Player}{Music Player Example}
+ \li \l{Qt Quick Controls Examples}{All Examples}
\endlist
\section1 Related Modules
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-indicators.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-indicators.qdoc
index 54ac0a5a..9f9e357b 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-indicators.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-indicators.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for indicator controls
- Qt Quick Controls 2 offers a selection of indicator-like controls.
+ Qt Quick Controls offers a selection of indicator-like controls.
\annotatedlist qtquickcontrols2-indicators
@@ -78,6 +78,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-input.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-input.qdoc
index 60cd586d..6bc037e0 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-input.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-input.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for input controls
- Qt Quick Controls 2 offers a variety of input controls for both numeric
+ Qt Quick Controls offers a variety of input controls for both numeric
and textual input.
\annotatedlist qtquickcontrols2-input
@@ -118,6 +118,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
index d9e34a5f..a146843a 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
@@ -67,10 +67,10 @@
\endtable
To run an application with the Material style, see
- \l {Using Styles in Qt Quick Controls 2}.
+ \l {Using Styles in Qt Quick Controls}.
\note The Material style is not a native Android style. The Material
- style is a 100% cross-platform Qt Quick Controls 2 style implementation that
+ style is a 100% cross-platform Qt Quick Controls style implementation that
follows the Google Material Design Guidelines. The style runs on any
platform, and looks more or less identical everywhere. Minor differences
may occur due to differences in available system fonts and font rendering
@@ -124,14 +124,14 @@
\include qquickmaterialstyle.qdocinc conf
- See \l {Qt Quick Controls 2 Configuration File} for more details about the
+ See \l {Qt Quick Controls Configuration File} for more details about the
configuration file.
\section3 Environment Variables
\include qquickmaterialstyle.qdocinc env
- See \l {Supported Environment Variables in Qt Quick Controls 2} for the full
+ See \l {Supported Environment Variables in Qt Quick Controls} for the full
list of supported environment variables.
\section2 Dependency
@@ -145,7 +145,7 @@
If the Material style is imported in a QML file that is always loaded, the
Material style must be deployed with the application in order to be able
to run the application regardless of which style the application is run with.
- By using \l {Using File Selectors with Qt Quick Controls 2}{file selectors},
+ By using \l {Using File Selectors with Qt Quick Controls}{file selectors},
style-specific tweaks can be applied without creating a hard dependency to
a style.
@@ -232,7 +232,7 @@
To use the dense variant, either set the
\c QT_QUICK_CONTROLS_MATERIAL_VARIANT environment variable to \c Dense,
or specify \c Variant=Dense in the
- \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf} file.
+ \l {Qt Quick Controls Configuration File}{qtquickcontrols2.conf} file.
The default value in both cases is \c Normal.
The following images illustrate the differences between some of the
@@ -399,6 +399,6 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
+ \li \l{Styling Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-navigation.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-navigation.qdoc
index ce4a6eae..95928d13 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-navigation.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-navigation.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for navigation controls
- Qt Quick Controls 2 offers a selection of navigation models.
+ Qt Quick Controls offers a selection of navigation models.
\annotatedlist qtquickcontrols2-navigation
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-popups.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-popups.qdoc
index bdcee545..c26b4c4b 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-popups.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-popups.qdoc
@@ -94,6 +94,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
index a28b2974..c8c44264 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
@@ -31,13 +31,13 @@
\title Qt Quick Controls QML Types
\keyword Qt Quick Controls 2 QML Types
\ingroup qmlmodules
- \brief Provides QML types for user interfaces (Qt Quick Controls 2).
+ \brief Provides QML types for user interfaces (Qt Quick Controls).
- \l{Qt Quick Controls 2} provides QML types for creating user interfaces.
+ \l{Qt Quick Controls} provides QML types for creating user interfaces.
These QML types work in conjunction with \l{Qt Quick} and
\l{Qt Quick Layouts}.
- Qt Quick Controls 2 QML types can be imported into your application
+ Qt Quick Controls QML types can be imported into your application
using the following import statement in your .qml file:
\badcode \QtMinorVersion
@@ -48,11 +48,11 @@
\generatelist {qmltypesbymodule QtQuick.Controls}
\noautolist
- For more information on the Qt Quick Controls 2 module, see the
- \l {Qt Quick Controls 2} module documentation.
+ For more information on the Qt Quick Controls module, see the
+ \l {Qt Quick Controls} module documentation.
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-separators.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-separators.qdoc
index 03c6829c..481a744e 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-separators.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-separators.qdoc
@@ -31,7 +31,7 @@
\ingroup qtquickcontrols2-guidelines
\brief Guidelines for separator controls
- Qt Quick Controls 2 offers a selection of separators.
+ Qt Quick Controls offers a selection of separators.
\annotatedlist qtquickcontrols2-separators
@@ -58,6 +58,6 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 Guidelines}
+ \li \l {Qt Quick Controls Guidelines}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
index a1a74ec9..27731e42 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc
@@ -27,23 +27,23 @@
/*!
\page qtquickcontrols2-styles.html
- \title Styling Qt Quick Controls 2
+ \title Styling Qt Quick Controls
\section1 Available Styles
- Qt Quick Controls 2 comes with a selection of styles.
+ Qt Quick Controls comes with a selection of styles.
\section2 Default Style
\image qtquickcontrols2-default-thumbnail.png
The \l {Default Style} is a simple and light-weight all-round style that offers
- the maximum performance for Qt Quick Controls 2.
+ the maximum performance for Qt Quick Controls.
\section2 Fusion Style
\image qtquickcontrols2-fusion-thumbnail.png
The \l {Fusion Style} is a platform-agnostic style that offers a desktop-oriented
- look'n'feel for Qt Quick Controls 2.
+ look'n'feel for Qt Quick Controls.
\section2 Imagine Style
@@ -67,7 +67,7 @@
\l {https://dev.windows.com/design}{Microsoft Universal Design Guidelines},
but requires more system resources than the Default style.
- \section1 Using Styles in Qt Quick Controls 2
+ \section1 Using Styles in Qt Quick Controls
In order to run an application with a specific style, either configure the
style using \l QQuickStyle in C++, pass a command line argument, or set an
@@ -81,7 +81,7 @@
\section2 Using QQuickStyle in C++
\l QQuickStyle provides C++ API for configuring a specific style. The following
- example runs a Qt Quick Controls 2 application with the Material style:
+ example runs a Qt Quick Controls application with the Material style:
\code
QQuickStyle::setStyle("Material");
@@ -93,7 +93,7 @@
Passing a \c -style command line argument is the convenient way to test different
styles. It takes precedence over the other methods listed below. The following
- example runs a Qt Quick Controls 2 application with the Material style:
+ example runs a Qt Quick Controls application with the Material style:
\code
./app -style material
@@ -103,19 +103,19 @@
Setting the \c QT_QUICK_CONTROLS_STYLE environment variable can be used to set
a system-wide style preference. It takes precedence over the configuration file
- mentioned below. The following example runs a Qt Quick Controls 2 application with
+ mentioned below. The following example runs a Qt Quick Controls application with
the Universal style:
\code
QT_QUICK_CONTROLS_STYLE=universal ./app
\endcode
- See \l {Supported Environment Variables in Qt Quick Controls 2} for the full list
+ See \l {Supported Environment Variables in Qt Quick Controls} for the full list
of supported environment variables.
\section2 Configuration file
- Qt Quick Controls 2 support a special configuration file, \c :/qtquickcontrols2.conf,
+ Qt Quick Controls support a special configuration file, \c :/qtquickcontrols2.conf,
that is built into an application's resources.
The configuration file can specify the preferred style (may be overridden by either
@@ -127,7 +127,7 @@
Style=Material
\endcode
- See \l {Qt Quick Controls 2 Configuration File} for more details about the
+ See \l {Qt Quick Controls Configuration File} for more details about the
configuration file.
\section1 Related Information
@@ -137,10 +137,10 @@
\li \l {Imagine Style}
\li \l {Material Style}
\li \l {Universal Style}
- \li \l {Customizing Qt Quick Controls 2}
- \li \l {Using File Selectors with Qt Quick Controls 2}
- \li \l {Deploying Qt Quick Controls 2 Applications}
- \li \l {Qt Quick Controls 2 Configuration File}
- \li \l {Supported Environment Variables in Qt Quick Controls 2}
+ \li \l {Customizing Qt Quick Controls}
+ \li \l {Using File Selectors with Qt Quick Controls}
+ \li \l {Deploying Qt Quick Controls Applications}
+ \li \l {Qt Quick Controls Configuration File}
+ \li \l {Supported Environment Variables in Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
index f1bfb1c8..1e67dd75 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
@@ -66,10 +66,10 @@
\endtable
To run an application with the Universal style, see
- \l {Using Styles in Qt Quick Controls 2}.
+ \l {Using Styles in Qt Quick Controls}.
\note The Universal style is not a native Windows 10 style. The Universal
- style is a 100% cross-platform Qt Quick Controls 2 style implementation that
+ style is a 100% cross-platform Qt Quick Controls style implementation that
follows the Microsoft Universal Design Guidelines. The style runs on any
platform, and looks more or less identical everywhere. Minor differences
may occur due to differences in available system fonts and font rendering
@@ -123,14 +123,14 @@
\include qquickuniversalstyle.qdocinc conf
- See \l {Qt Quick Controls 2 Configuration File} for more details about the
+ See \l {Qt Quick Controls Configuration File} for more details about the
configuration file.
\section3 Environment Variables
\include qquickuniversalstyle.qdocinc env
- See \l {Supported Environment Variables in Qt Quick Controls 2} for the full
+ See \l {Supported Environment Variables in Qt Quick Controls} for the full
list of supported environment variables.
\section2 Dependency
@@ -144,7 +144,7 @@
If the Universal style is imported in a QML file that is always loaded, the
Universal style must be deployed with the application in order to be able
to run the application regardless of which style the application is run with.
- By using \l {Using File Selectors with Qt Quick Controls 2}{file selectors},
+ By using \l {Using File Selectors with Qt Quick Controls}{file selectors},
style-specific tweaks can be applied without creating a hard dependency to
a style.
@@ -283,6 +283,6 @@
\section1 Related Information
\list
- \li \l{Styling Qt Quick Controls 2}
+ \li \l{Styling Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/controls/fusion/SplitView.qml b/src/imports/controls/fusion/SplitView.qml
new file mode 100644
index 00000000..6a04b4da
--- /dev/null
+++ b/src/imports/controls/fusion/SplitView.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Templates 2.13 as T
+import QtQuick.Controls 2.13
+import QtQuick.Controls.impl 2.13
+import QtQuick.Controls.Fusion 2.13
+
+T.SplitView {
+ id: control
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ handle: Rectangle {
+ implicitWidth: control.orientation === Qt.Horizontal ? 2 : control.width
+ implicitHeight: control.orientation === Qt.Horizontal ? control.height : 2
+ color: T.SplitHandle.pressed ? palette.dark
+ : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.mid)
+ }
+}
diff --git a/src/imports/controls/fusion/dependencies.json b/src/imports/controls/fusion/dependencies.json
new file mode 100644
index 00000000..21ded052
--- /dev/null
+++ b/src/imports/controls/fusion/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "QtQuick.Controls",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/imports/controls/fusion/fusion.pri b/src/imports/controls/fusion/fusion.pri
index c4493c09..72978db5 100644
--- a/src/imports/controls/fusion/fusion.pri
+++ b/src/imports/controls/fusion/fusion.pri
@@ -51,6 +51,7 @@ QML_FILES += \
$$PWD/SliderGroove.qml \
$$PWD/SliderHandle.qml \
$$PWD/SpinBox.qml \
+ $$PWD/SplitView.qml \
$$PWD/SwipeDelegate.qml \
$$PWD/SwitchDelegate.qml \
$$PWD/SwitchIndicator.qml \
diff --git a/src/imports/controls/fusion/fusion.pro b/src/imports/controls/fusion/fusion.pro
index 4bc9fcc1..663636da 100644
--- a/src/imports/controls/fusion/fusion.pro
+++ b/src/imports/controls/fusion/fusion.pro
@@ -1,6 +1,8 @@
TARGET = qtquickcontrols2fusionstyleplugin
TARGETPATH = QtQuick/Controls.2/Fusion
-IMPORT_VERSION = 2.5
+
+IMPORT_NAME = QtQuick.Controls.Fusion
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/fusion/plugins.qmltypes b/src/imports/controls/fusion/plugins.qmltypes
index e6c350d6..a70b4901 100644
--- a/src/imports/controls/fusion/plugins.qmltypes
+++ b/src/imports/controls/fusion/plugins.qmltypes
@@ -4,10 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Controls.Fusion 2.3'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Fusion 2.13'
Module {
- dependencies: [ ]
+ dependencies: ["QtQuick.Controls 2.0"]
Component {
name: "QQuickFusionBusyIndicator"
defaultProperty: "data"
@@ -143,4 +143,72 @@ Module {
Parameter { name: "palette"; type: "QPalette" }
}
}
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/ButtonPanel 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/ButtonPanel 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "highlighted"; type: "bool" }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/CheckIndicator 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/CheckIndicator 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "pressedColor"; type: "QColor"; isReadonly: true }
+ Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/RadioIndicator 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/RadioIndicator 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "pressedColor"; type: "QColor"; isReadonly: true }
+ Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/SliderGroove 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/SliderGroove 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "offset"; type: "double" }
+ Property { name: "progress"; type: "double" }
+ Property { name: "visualProgress"; type: "double" }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/SliderHandle 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/SliderHandle 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "palette"; type: "QVariant" }
+ Property { name: "pressed"; type: "bool" }
+ Property { name: "hovered"; type: "bool" }
+ Property { name: "vertical"; type: "bool" }
+ Property { name: "visualFocus"; type: "bool" }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3"
+ exports: ["QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3"]
+ exportMetaObjectRevisions: [3]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "pressedColor"; type: "QColor"; isReadonly: true }
+ Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true }
+ }
}
diff --git a/src/imports/controls/fusion/qquickfusionstyle.cpp b/src/imports/controls/fusion/qquickfusionstyle.cpp
index 98c1894f..7797463a 100644
--- a/src/imports/controls/fusion/qquickfusionstyle.cpp
+++ b/src/imports/controls/fusion/qquickfusionstyle.cpp
@@ -82,7 +82,7 @@ QColor QQuickFusionStyle::outline(const QPalette &palette)
{
if (palette.window().style() == Qt::TexturePattern)
return QColor(0, 0, 0, 160);
- return palette.background().color().darker(140);
+ return palette.window().color().darker(140);
}
QColor QQuickFusionStyle::highlightedOutline(const QPalette &palette)
diff --git a/src/imports/controls/imagine/SplitView.qml b/src/imports/controls/imagine/SplitView.qml
new file mode 100644
index 00000000..a4a858f4
--- /dev/null
+++ b/src/imports/controls/imagine/SplitView.qml
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Templates 2.13 as T
+import QtQuick.Controls.Imagine 2.13
+import QtQuick.Controls.Imagine.impl 2.13
+
+T.SplitView {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ handle: NinePatchImage {
+ source: Imagine.url + "splitview-handle"
+ NinePatchImageSelector on source {
+ states: [
+ {"vertical": control.orientation === Qt.Vertical},
+ {"horizontal":control.orientation === Qt.Horizontal},
+ {"disabled": !control.enabled},
+ {"pressed": T.SplitHandle.pressed},
+ {"mirrored": control.mirrored},
+ {"hovered": T.SplitHandle.hovered}
+ ]
+ }
+ }
+}
diff --git a/src/imports/controls/imagine/dependencies.json b/src/imports/controls/imagine/dependencies.json
new file mode 100644
index 00000000..21ded052
--- /dev/null
+++ b/src/imports/controls/imagine/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "QtQuick.Controls",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/imports/controls/imagine/design/imagine.sketch b/src/imports/controls/imagine/design/imagine.sketch
index ecb437f7..f3535b37 100644
--- a/src/imports/controls/imagine/design/imagine.sketch
+++ b/src/imports/controls/imagine/design/imagine.sketch
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-disabled.png b/src/imports/controls/imagine/images/splitview-handle-disabled.png
new file mode 100644
index 00000000..0071c196
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-disabled.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-disabled@2x.png b/src/imports/controls/imagine/images/splitview-handle-disabled@2x.png
new file mode 100644
index 00000000..67cee407
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-disabled@2x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-disabled@3x.png b/src/imports/controls/imagine/images/splitview-handle-disabled@3x.png
new file mode 100644
index 00000000..84752ba9
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-disabled@3x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-disabled@4x.png b/src/imports/controls/imagine/images/splitview-handle-disabled@4x.png
new file mode 100644
index 00000000..e4be8597
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-disabled@4x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-hovered.png b/src/imports/controls/imagine/images/splitview-handle-hovered.png
new file mode 100644
index 00000000..1386d213
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-hovered.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-hovered@2x.png b/src/imports/controls/imagine/images/splitview-handle-hovered@2x.png
new file mode 100644
index 00000000..4708a47b
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-hovered@2x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-hovered@3x.png b/src/imports/controls/imagine/images/splitview-handle-hovered@3x.png
new file mode 100644
index 00000000..2ccc1ff5
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-hovered@3x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-hovered@4x.png b/src/imports/controls/imagine/images/splitview-handle-hovered@4x.png
new file mode 100644
index 00000000..6929da70
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-hovered@4x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-pressed.png b/src/imports/controls/imagine/images/splitview-handle-pressed.png
new file mode 100644
index 00000000..7face6b4
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-pressed.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-pressed@2x.png b/src/imports/controls/imagine/images/splitview-handle-pressed@2x.png
new file mode 100644
index 00000000..ad940d0f
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-pressed@2x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-pressed@3x.png b/src/imports/controls/imagine/images/splitview-handle-pressed@3x.png
new file mode 100644
index 00000000..d4e19dc2
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-pressed@3x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle-pressed@4x.png b/src/imports/controls/imagine/images/splitview-handle-pressed@4x.png
new file mode 100644
index 00000000..8ccbbebc
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle-pressed@4x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle.png b/src/imports/controls/imagine/images/splitview-handle.png
new file mode 100644
index 00000000..c1dffa67
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle@2x.png b/src/imports/controls/imagine/images/splitview-handle@2x.png
new file mode 100644
index 00000000..180e266a
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle@2x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle@3x.png b/src/imports/controls/imagine/images/splitview-handle@3x.png
new file mode 100644
index 00000000..35ea51db
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle@3x.png
Binary files differ
diff --git a/src/imports/controls/imagine/images/splitview-handle@4x.png b/src/imports/controls/imagine/images/splitview-handle@4x.png
new file mode 100644
index 00000000..3a1e7e9f
--- /dev/null
+++ b/src/imports/controls/imagine/images/splitview-handle@4x.png
Binary files differ
diff --git a/src/imports/controls/imagine/imagine.pri b/src/imports/controls/imagine/imagine.pri
index cb6857a5..081a509e 100644
--- a/src/imports/controls/imagine/imagine.pri
+++ b/src/imports/controls/imagine/imagine.pri
@@ -30,6 +30,7 @@ QML_FILES += \
$$PWD/ScrollIndicator.qml \
$$PWD/Slider.qml \
$$PWD/SpinBox.qml \
+ $$PWD/SplitView.qml \
$$PWD/StackView.qml \
$$PWD/SwipeDelegate.qml \
$$PWD/SwipeView.qml \
diff --git a/src/imports/controls/imagine/imagine.pro b/src/imports/controls/imagine/imagine.pro
index 2368c0a4..f16bd081 100644
--- a/src/imports/controls/imagine/imagine.pro
+++ b/src/imports/controls/imagine/imagine.pro
@@ -1,6 +1,8 @@
TARGET = qtquickcontrols2imaginestyleplugin
TARGETPATH = QtQuick/Controls.2/Imagine
-IMPORT_VERSION = 2.5
+
+IMPORT_NAME = QtQuick.Controls.Imagine
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/imagine/plugins.qmltypes b/src/imports/controls/imagine/plugins.qmltypes
index b09ae141..014714f3 100644
--- a/src/imports/controls/imagine/plugins.qmltypes
+++ b/src/imports/controls/imagine/plugins.qmltypes
@@ -4,12 +4,30 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Controls.Imagine 2.3'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Imagine 2.13'
Module {
- dependencies: []
+ dependencies: ["QtQuick.Controls 2.0"]
+ Component {
+ name: "QQuickAnimatedImageSelector"
+ prototype: "QQuickImageSelector"
+ exports: ["QtQuick.Controls.Imagine.impl/AnimatedImageSelector 2.3"]
+ exportMetaObjectRevisions: [0]
+ }
Component { name: "QQuickAttachedObject"; prototype: "QObject" }
Component {
+ name: "QQuickImageSelector"
+ prototype: "QObject"
+ exports: ["QtQuick.Controls.Imagine.impl/ImageSelector 2.3"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "source"; type: "QUrl"; isReadonly: true }
+ Property { name: "name"; type: "string" }
+ Property { name: "path"; type: "string" }
+ Property { name: "states"; type: "QVariantList" }
+ Property { name: "separator"; type: "string" }
+ Property { name: "cache"; type: "bool" }
+ }
+ Component {
name: "QQuickImagineStyle"
prototype: "QQuickAttachedObject"
exports: ["QtQuick.Controls.Imagine/Imagine 2.3"]
@@ -18,4 +36,25 @@ Module {
Property { name: "path"; type: "string" }
Property { name: "url"; type: "QUrl"; isReadonly: true }
}
+ Component {
+ name: "QQuickNinePatchImage"
+ defaultProperty: "data"
+ prototype: "QQuickImage"
+ exports: ["QtQuick.Controls.Imagine.impl/NinePatchImage 2.3"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "topPadding"; type: "double"; isReadonly: true }
+ Property { name: "leftPadding"; type: "double"; isReadonly: true }
+ Property { name: "rightPadding"; type: "double"; isReadonly: true }
+ Property { name: "bottomPadding"; type: "double"; isReadonly: true }
+ Property { name: "topInset"; type: "double"; isReadonly: true }
+ Property { name: "leftInset"; type: "double"; isReadonly: true }
+ Property { name: "rightInset"; type: "double"; isReadonly: true }
+ Property { name: "bottomInset"; type: "double"; isReadonly: true }
+ }
+ Component {
+ name: "QQuickNinePatchImageSelector"
+ prototype: "QQuickImageSelector"
+ exports: ["QtQuick.Controls.Imagine.impl/NinePatchImageSelector 2.3"]
+ exportMetaObjectRevisions: [0]
+ }
}
diff --git a/src/imports/controls/material/SplitView.qml b/src/imports/controls/material/SplitView.qml
new file mode 100644
index 00000000..5544e833
--- /dev/null
+++ b/src/imports/controls/material/SplitView.qml
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Templates 2.13 as T
+import QtQuick.Controls 2.13
+import QtQuick.Controls.impl 2.13
+import QtQuick.Controls.Material 2.13
+
+T.SplitView {
+ id: control
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ handle: Rectangle {
+ implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width
+ implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6
+ color: T.SplitHandle.pressed ? control.Material.background
+ : Qt.lighter(control.Material.background, T.SplitHandle.hovered ? 1.2 : 1.1)
+
+ Rectangle {
+ color: control.Material.secondaryTextColor
+ width: control.orientation === Qt.Horizontal ? thickness : length
+ height: control.orientation === Qt.Horizontal ? length : thickness
+ radius: thickness
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ property int length: parent.T.SplitHandle.pressed ? 3 : 8
+ readonly property int thickness: parent.T.SplitHandle.pressed ? 3 : 1
+
+ Behavior on length {
+ NumberAnimation {
+ duration: 100
+ }
+ }
+ }
+ }
+}
diff --git a/src/imports/controls/material/dependencies.json b/src/imports/controls/material/dependencies.json
new file mode 100644
index 00000000..21ded052
--- /dev/null
+++ b/src/imports/controls/material/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "QtQuick.Controls",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/imports/controls/material/material.pri b/src/imports/controls/material/material.pri
index ab925aa2..bda1fb21 100644
--- a/src/imports/controls/material/material.pri
+++ b/src/imports/controls/material/material.pri
@@ -53,6 +53,7 @@ QML_FILES += \
$$PWD/Slider.qml \
$$PWD/SliderHandle.qml \
$$PWD/SpinBox.qml \
+ $$PWD/SplitView.qml \
$$PWD/StackView.qml \
$$PWD/SwipeDelegate.qml \
$$PWD/SwipeView.qml \
diff --git a/src/imports/controls/material/material.pro b/src/imports/controls/material/material.pro
index c3cbb355..cf08b925 100644
--- a/src/imports/controls/material/material.pro
+++ b/src/imports/controls/material/material.pro
@@ -1,6 +1,8 @@
TARGET = qtquickcontrols2materialstyleplugin
TARGETPATH = QtQuick/Controls.2/Material
-IMPORT_VERSION = 2.5
+
+IMPORT_NAME = QtQuick.Controls.Material
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/material/plugins.qmltypes b/src/imports/controls/material/plugins.qmltypes
index 2ddf99a7..3e95fa44 100644
--- a/src/imports/controls/material/plugins.qmltypes
+++ b/src/imports/controls/material/plugins.qmltypes
@@ -4,12 +4,51 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Controls.Material 2.3'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Material 2.13'
Module {
- dependencies: []
+ dependencies: ["QtQuick.Controls 2.0"]
Component { name: "QQuickAttachedObject"; prototype: "QObject" }
Component {
+ name: "QQuickMaterialBusyIndicator"
+ defaultProperty: "data"
+ prototype: "QQuickItem"
+ exports: ["QtQuick.Controls.Material.impl/BusyIndicatorImpl 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "color"; type: "QColor" }
+ Property { name: "running"; type: "bool" }
+ }
+ Component {
+ name: "QQuickMaterialProgressBar"
+ defaultProperty: "data"
+ prototype: "QQuickItem"
+ exports: ["QtQuick.Controls.Material.impl/ProgressBarImpl 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "color"; type: "QColor" }
+ Property { name: "progress"; type: "double" }
+ Property { name: "indeterminate"; type: "bool" }
+ }
+ Component {
+ name: "QQuickMaterialRipple"
+ defaultProperty: "data"
+ prototype: "QQuickItem"
+ exports: ["QtQuick.Controls.Material.impl/Ripple 2.0"]
+ exportMetaObjectRevisions: [0]
+ Enum {
+ name: "Trigger"
+ values: {
+ "Press": 0,
+ "Release": 1
+ }
+ }
+ Property { name: "color"; type: "QColor" }
+ Property { name: "clipRadius"; type: "double" }
+ Property { name: "pressed"; type: "bool" }
+ Property { name: "active"; type: "bool" }
+ Property { name: "anchor"; type: "QQuickItem"; isPointer: true }
+ Property { name: "trigger"; type: "Trigger" }
+ }
+ Component {
name: "QQuickMaterialStyle"
prototype: "QQuickAttachedObject"
exports: ["QtQuick.Controls.Material/Material 2.0"]
@@ -24,6 +63,13 @@ Module {
}
}
Enum {
+ name: "Variant"
+ values: {
+ "Normal": 0,
+ "Dense": 1
+ }
+ }
+ Enum {
name: "Color"
values: {
"Red": 0,
@@ -72,6 +118,49 @@ Module {
Property { name: "foreground"; type: "QVariant" }
Property { name: "background"; type: "QVariant" }
Property { name: "elevation"; type: "int" }
+ Property { name: "primaryColor"; type: "QColor"; isReadonly: true }
+ Property { name: "accentColor"; type: "QColor"; isReadonly: true }
+ Property { name: "backgroundColor"; type: "QColor"; isReadonly: true }
+ Property { name: "primaryTextColor"; type: "QColor"; isReadonly: true }
+ Property { name: "primaryHighlightedTextColor"; type: "QColor"; isReadonly: true }
+ Property { name: "secondaryTextColor"; type: "QColor"; isReadonly: true }
+ Property { name: "hintTextColor"; type: "QColor"; isReadonly: true }
+ Property { name: "textSelectionColor"; type: "QColor"; isReadonly: true }
+ Property { name: "dropShadowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "dividerColor"; type: "QColor"; isReadonly: true }
+ Property { name: "iconColor"; type: "QColor"; isReadonly: true }
+ Property { name: "iconDisabledColor"; type: "QColor"; isReadonly: true }
+ Property { name: "buttonColor"; type: "QColor"; isReadonly: true }
+ Property { name: "buttonDisabledColor"; type: "QColor"; isReadonly: true }
+ Property { name: "highlightedButtonColor"; type: "QColor"; isReadonly: true }
+ Property { name: "frameColor"; type: "QColor"; isReadonly: true }
+ Property { name: "rippleColor"; type: "QColor"; isReadonly: true }
+ Property { name: "highlightedRippleColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchUncheckedTrackColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchCheckedTrackColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchUncheckedHandleColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchCheckedHandleColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchDisabledTrackColor"; type: "QColor"; isReadonly: true }
+ Property { name: "switchDisabledHandleColor"; type: "QColor"; isReadonly: true }
+ Property { name: "scrollBarColor"; type: "QColor"; isReadonly: true }
+ Property { name: "scrollBarHoveredColor"; type: "QColor"; isReadonly: true }
+ Property { name: "scrollBarPressedColor"; type: "QColor"; isReadonly: true }
+ Property { name: "dialogColor"; type: "QColor"; isReadonly: true }
+ Property { name: "backgroundDimColor"; type: "QColor"; isReadonly: true }
+ Property { name: "listHighlightColor"; type: "QColor"; isReadonly: true }
+ Property { name: "tooltipColor"; type: "QColor"; isReadonly: true }
+ Property { name: "toolBarColor"; type: "QColor"; isReadonly: true }
+ Property { name: "toolTextColor"; type: "QColor"; isReadonly: true }
+ Property { name: "spinBoxDisabledIconColor"; type: "QColor"; isReadonly: true }
+ Property { name: "touchTarget"; type: "int"; isReadonly: true }
+ Property { name: "buttonHeight"; type: "int"; isReadonly: true }
+ Property { name: "delegateHeight"; type: "int"; isReadonly: true }
+ Property { name: "dialogButtonBoxHeight"; type: "int"; isReadonly: true }
+ Property { name: "frameVerticalPadding"; type: "int"; isReadonly: true }
+ Property { name: "menuItemHeight"; type: "int"; isReadonly: true }
+ Property { name: "menuItemVerticalPadding"; type: "int"; isReadonly: true }
+ Property { name: "switchDelegateVerticalPadding"; type: "int"; isReadonly: true }
+ Property { name: "tooltipHeight"; type: "int"; isReadonly: true }
Signal { name: "paletteChanged" }
Method {
name: "color"
@@ -91,4 +180,103 @@ Module {
Parameter { name: "shade"; type: "Shade" }
}
}
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Material.impl/BoxShadow 2.0"
+ exports: ["QtQuick.Controls.Material.impl/BoxShadow 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "offsetX"; type: "int" }
+ Property { name: "offsetY"; type: "int" }
+ Property { name: "blurRadius"; type: "int" }
+ Property { name: "spreadRadius"; type: "int" }
+ Property { name: "source"; type: "QQuickItem"; isPointer: true }
+ Property { name: "fullWidth"; type: "bool" }
+ Property { name: "fullHeight"; type: "bool" }
+ Property { name: "glowRadius"; type: "double" }
+ Property { name: "spread"; type: "double" }
+ Property { name: "color"; type: "QColor" }
+ Property { name: "cornerRadius"; type: "double" }
+ Property { name: "cached"; type: "bool" }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Material.impl/CheckIndicator 2.0"
+ exports: ["QtQuick.Controls.Material.impl/CheckIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "checkState"; type: "int" }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Material.impl/CursorDelegate 2.0"
+ exports: ["QtQuick.Controls.Material.impl/CursorDelegate 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ }
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Material.impl/ElevationEffect 2.0"
+ exports: ["QtQuick.Controls.Material.impl/ElevationEffect 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "source"; type: "QVariant" }
+ Property { name: "elevation"; type: "int" }
+ Property { name: "fullWidth"; type: "bool" }
+ Property { name: "fullHeight"; type: "bool" }
+ Property { name: "sourceItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
+ Property { name: "_shadows"; type: "QVariant"; isReadonly: true }
+ Property { name: "_shadow"; type: "QVariant"; isReadonly: true }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Material.impl/RadioIndicator 2.0"
+ exports: ["QtQuick.Controls.Material.impl/RadioIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ }
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Material.impl/RectangularGlow 2.0"
+ exports: ["QtQuick.Controls.Material.impl/RectangularGlow 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "glowRadius"; type: "double" }
+ Property { name: "spread"; type: "double" }
+ Property { name: "color"; type: "QColor" }
+ Property { name: "cornerRadius"; type: "double" }
+ Property { name: "cached"; type: "bool" }
+ }
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Material.impl/SliderHandle 2.0"
+ exports: ["QtQuick.Controls.Material.impl/SliderHandle 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "value"; type: "double" }
+ Property { name: "handleHasFocus"; type: "bool" }
+ Property { name: "handlePressed"; type: "bool" }
+ Property { name: "handleHovered"; type: "bool" }
+ Property { name: "initialSize"; type: "int"; isReadonly: true }
+ Property { name: "control"; type: "QVariant"; isReadonly: true }
+ }
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Material.impl/SwitchIndicator 2.0"
+ exports: ["QtQuick.Controls.Material.impl/SwitchIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "handle"; type: "QQuickRectangle"; isReadonly: true; isPointer: true }
+ }
}
diff --git a/src/imports/controls/plugins.qmltypes b/src/imports/controls/plugins.qmltypes
index 4585a9a6..9b4610f0 100644
--- a/src/imports/controls/plugins.qmltypes
+++ b/src/imports/controls/plugins.qmltypes
@@ -4,7 +4,7 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Controls 2.5 -merge ../templates/plugins.qmltypes -dependencies dependencies.json'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls 2.13'
Module {
dependencies: [
@@ -538,6 +538,14 @@ Module {
defaultProperty: "data"
}
Component {
+ prototype: "QQuickSplitView"
+ name: "QtQuick.Controls/SplitView 2.13"
+ exports: ["QtQuick.Controls/SplitView 2.13"]
+ exportMetaObjectRevisions: [13]
+ isComposite: true
+ defaultProperty: "contentData"
+ }
+ Component {
prototype: "QQuickStackView"
name: "QtQuick.Controls/StackView 2.0"
exports: ["QtQuick.Controls/StackView 2.0"]
@@ -649,1831 +657,4 @@ Module {
isComposite: true
defaultProperty: "data"
}
-
- Component {
- name: "QQuickAbstractButton"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/AbstractButton 2.0",
- "QtQuick.Templates/AbstractButton 2.2",
- "QtQuick.Templates/AbstractButton 2.3",
- "QtQuick.Templates/AbstractButton 2.4",
- "QtQuick.Templates/AbstractButton 2.5"
- ]
- exportMetaObjectRevisions: [0, 2, 3, 4, 5]
- Enum {
- name: "Display"
- values: {
- "IconOnly": 0,
- "TextOnly": 1,
- "TextBesideIcon": 2,
- "TextUnderIcon": 3
- }
- }
- Property { name: "text"; type: "string" }
- Property { name: "down"; type: "bool" }
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Property { name: "checked"; type: "bool" }
- Property { name: "checkable"; type: "bool" }
- Property { name: "autoExclusive"; type: "bool" }
- Property { name: "autoRepeat"; type: "bool" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
- Property { name: "icon"; revision: 3; type: "QQuickIcon" }
- Property { name: "display"; revision: 3; type: "Display" }
- Property { name: "action"; revision: 3; type: "QQuickAction"; isPointer: true }
- Property { name: "autoRepeatDelay"; revision: 4; type: "int" }
- Property { name: "autoRepeatInterval"; revision: 4; type: "int" }
- Property { name: "pressX"; revision: 4; type: "double"; isReadonly: true }
- Property { name: "pressY"; revision: 4; type: "double"; isReadonly: true }
- Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "pressed" }
- Signal { name: "released" }
- Signal { name: "canceled" }
- Signal { name: "clicked" }
- Signal { name: "pressAndHold" }
- Signal { name: "doubleClicked" }
- Signal { name: "toggled"; revision: 2 }
- Signal { name: "iconChanged"; revision: 3 }
- Signal { name: "displayChanged"; revision: 3 }
- Signal { name: "actionChanged"; revision: 3 }
- Signal { name: "autoRepeatDelayChanged"; revision: 4 }
- Signal { name: "autoRepeatIntervalChanged"; revision: 4 }
- Signal { name: "pressXChanged"; revision: 4 }
- Signal { name: "pressYChanged"; revision: 4 }
- Signal { name: "implicitIndicatorWidthChanged"; revision: 5 }
- Signal { name: "implicitIndicatorHeightChanged"; revision: 5 }
- Method { name: "toggle" }
- }
- Component {
- name: "QQuickAction"
- prototype: "QObject"
- exports: ["QtQuick.Templates/Action 2.3"]
- exportMetaObjectRevisions: [0]
- Property { name: "text"; type: "string" }
- Property { name: "icon"; type: "QQuickIcon" }
- Property { name: "enabled"; type: "bool" }
- Property { name: "checked"; type: "bool" }
- Property { name: "checkable"; type: "bool" }
- Property { name: "shortcut"; type: "QVariant" }
- Signal {
- name: "textChanged"
- Parameter { name: "text"; type: "string" }
- }
- Signal {
- name: "iconChanged"
- Parameter { name: "icon"; type: "QQuickIcon" }
- }
- Signal {
- name: "enabledChanged"
- Parameter { name: "enabled"; type: "bool" }
- }
- Signal {
- name: "checkedChanged"
- Parameter { name: "checked"; type: "bool" }
- }
- Signal {
- name: "checkableChanged"
- Parameter { name: "checkable"; type: "bool" }
- }
- Signal {
- name: "shortcutChanged"
- Parameter { name: "shortcut"; type: "QKeySequence" }
- }
- Signal {
- name: "toggled"
- Parameter { name: "source"; type: "QObject"; isPointer: true }
- }
- Signal { name: "toggled" }
- Signal {
- name: "triggered"
- Parameter { name: "source"; type: "QObject"; isPointer: true }
- }
- Signal { name: "triggered" }
- Method {
- name: "toggle"
- Parameter { name: "source"; type: "QObject"; isPointer: true }
- }
- Method { name: "toggle" }
- Method {
- name: "trigger"
- Parameter { name: "source"; type: "QObject"; isPointer: true }
- }
- Method { name: "trigger" }
- }
- Component {
- name: "QQuickActionGroup"
- defaultProperty: "actions"
- prototype: "QObject"
- exports: ["QtQuick.Templates/ActionGroup 2.3"]
- exportMetaObjectRevisions: [0]
- attachedType: "QQuickActionGroupAttached"
- Property { name: "checkedAction"; type: "QQuickAction"; isPointer: true }
- Property { name: "actions"; type: "QQuickAction"; isList: true; isReadonly: true }
- Property { name: "exclusive"; type: "bool" }
- Property { name: "enabled"; type: "bool" }
- Signal {
- name: "triggered"
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- Method {
- name: "addAction"
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- Method {
- name: "removeAction"
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- }
- Component {
- name: "QQuickActionGroupAttached"
- prototype: "QObject"
- Property { name: "group"; type: "QQuickActionGroup"; isPointer: true }
- }
- Component {
- name: "QQuickApplicationWindow"
- defaultProperty: "contentData"
- prototype: "QQuickWindowQmlImpl"
- exports: [
- "QtQuick.Templates/ApplicationWindow 2.0",
- "QtQuick.Templates/ApplicationWindow 2.3"
- ]
- exportMetaObjectRevisions: [0, 3]
- attachedType: "QQuickApplicationWindowAttached"
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "header"; type: "QQuickItem"; isPointer: true }
- Property { name: "footer"; type: "QQuickItem"; isPointer: true }
- Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true }
- Property { name: "font"; type: "QFont" }
- Property { name: "locale"; type: "QLocale" }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "menuBar"; revision: 3; type: "QQuickItem"; isPointer: true }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "menuBarChanged"; revision: 3 }
- }
- Component {
- name: "QQuickApplicationWindowAttached"
- prototype: "QObject"
- Property { name: "window"; type: "QQuickApplicationWindow"; isReadonly: true; isPointer: true }
- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "header"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "footer"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true }
- Property { name: "menuBar"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- }
- Component {
- name: "QQuickBusyIndicator"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/BusyIndicator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "running"; type: "bool" }
- }
- Component {
- name: "QQuickButton"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/Button 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "highlighted"; type: "bool" }
- Property { name: "flat"; type: "bool" }
- }
- Component {
- name: "QQuickButtonGroup"
- prototype: "QObject"
- exports: [
- "QtQuick.Templates/ButtonGroup 2.0",
- "QtQuick.Templates/ButtonGroup 2.1",
- "QtQuick.Templates/ButtonGroup 2.3",
- "QtQuick.Templates/ButtonGroup 2.4"
- ]
- exportMetaObjectRevisions: [0, 1, 3, 4]
- attachedType: "QQuickButtonGroupAttached"
- Property { name: "checkedButton"; type: "QQuickAbstractButton"; isPointer: true }
- Property { name: "buttons"; type: "QQuickAbstractButton"; isList: true; isReadonly: true }
- Property { name: "exclusive"; revision: 3; type: "bool" }
- Property { name: "checkState"; revision: 4; type: "Qt::CheckState" }
- Signal {
- name: "clicked"
- revision: 1
- Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true }
- }
- Signal { name: "exclusiveChanged"; revision: 3 }
- Signal { name: "checkStateChanged"; revision: 4 }
- Method {
- name: "addButton"
- Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true }
- }
- Method {
- name: "removeButton"
- Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true }
- }
- }
- Component {
- name: "QQuickButtonGroupAttached"
- prototype: "QObject"
- Property { name: "group"; type: "QQuickButtonGroup"; isPointer: true }
- }
- Component {
- name: "QQuickCheckBox"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: [
- "QtQuick.Templates/CheckBox 2.0",
- "QtQuick.Templates/CheckBox 2.4"
- ]
- exportMetaObjectRevisions: [0, 4]
- Property { name: "tristate"; type: "bool" }
- Property { name: "checkState"; type: "Qt::CheckState" }
- Property { name: "nextCheckState"; revision: 4; type: "QJSValue" }
- Signal { name: "nextCheckStateChanged"; revision: 4 }
- }
- Component {
- name: "QQuickCheckDelegate"
- defaultProperty: "data"
- prototype: "QQuickItemDelegate"
- exports: [
- "QtQuick.Templates/CheckDelegate 2.0",
- "QtQuick.Templates/CheckDelegate 2.4"
- ]
- exportMetaObjectRevisions: [0, 4]
- Property { name: "tristate"; type: "bool" }
- Property { name: "checkState"; type: "Qt::CheckState" }
- Property { name: "nextCheckState"; revision: 4; type: "QJSValue" }
- Signal { name: "nextCheckStateChanged"; revision: 4 }
- }
- Component {
- name: "QQuickComboBox"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/ComboBox 2.0",
- "QtQuick.Templates/ComboBox 2.1",
- "QtQuick.Templates/ComboBox 2.2",
- "QtQuick.Templates/ComboBox 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 2, 5]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "model"; type: "QVariant" }
- Property { name: "delegateModel"; type: "QQmlInstanceModel"; isReadonly: true; isPointer: true }
- Property { name: "pressed"; type: "bool" }
- Property { name: "highlightedIndex"; type: "int"; isReadonly: true }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "currentText"; type: "string"; isReadonly: true }
- Property { name: "displayText"; type: "string" }
- Property { name: "textRole"; type: "string" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
- Property { name: "popup"; type: "QQuickPopup"; isPointer: true }
- Property { name: "flat"; revision: 1; type: "bool" }
- Property { name: "down"; revision: 2; type: "bool" }
- Property { name: "editable"; revision: 2; type: "bool" }
- Property { name: "editText"; revision: 2; type: "string" }
- Property { name: "validator"; revision: 2; type: "QValidator"; isPointer: true }
- Property { name: "inputMethodHints"; revision: 2; type: "Qt::InputMethodHints" }
- Property { name: "inputMethodComposing"; revision: 2; type: "bool"; isReadonly: true }
- Property { name: "acceptableInput"; revision: 2; type: "bool"; isReadonly: true }
- Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal {
- name: "activated"
- Parameter { name: "index"; type: "int" }
- }
- Signal {
- name: "highlighted"
- Parameter { name: "index"; type: "int" }
- }
- Signal { name: "flatChanged"; revision: 1 }
- Signal { name: "accepted"; revision: 2 }
- Signal { name: "downChanged"; revision: 2 }
- Signal { name: "editableChanged"; revision: 2 }
- Signal { name: "editTextChanged"; revision: 2 }
- Signal { name: "validatorChanged"; revision: 2 }
- Signal { name: "inputMethodHintsChanged"; revision: 2 }
- Signal { name: "inputMethodComposingChanged"; revision: 2 }
- Signal { name: "acceptableInputChanged"; revision: 2 }
- Signal { name: "implicitIndicatorWidthChanged"; revision: 5 }
- Signal { name: "implicitIndicatorHeightChanged"; revision: 5 }
- Method { name: "incrementCurrentIndex" }
- Method { name: "decrementCurrentIndex" }
- Method { name: "selectAll"; revision: 2 }
- Method {
- name: "textAt"
- type: "string"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "find"
- type: "int"
- Parameter { name: "text"; type: "string" }
- Parameter { name: "flags"; type: "Qt::MatchFlags" }
- }
- Method {
- name: "find"
- type: "int"
- Parameter { name: "text"; type: "string" }
- }
- }
- Component {
- name: "QQuickContainer"
- defaultProperty: "contentData"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/Container 2.0",
- "QtQuick.Templates/Container 2.1",
- "QtQuick.Templates/Container 2.3",
- "QtQuick.Templates/Container 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 3, 5]
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "contentModel"; type: "QVariant"; isReadonly: true }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "contentWidth"; revision: 5; type: "double" }
- Property { name: "contentHeight"; revision: 5; type: "double" }
- Signal { name: "contentWidthChanged"; revision: 5 }
- Signal { name: "contentHeightChanged"; revision: 5 }
- Method {
- name: "setCurrentIndex"
- Parameter { name: "index"; type: "int" }
- }
- Method { name: "incrementCurrentIndex"; revision: 1 }
- Method { name: "decrementCurrentIndex"; revision: 1 }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "addItem"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "insertItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "moveItem"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- }
- Method {
- name: "removeItem"
- Parameter { name: "item"; type: "QVariant" }
- }
- Method {
- name: "takeItem"
- revision: 3
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component { name: "QQuickContentItem"; defaultProperty: "data"; prototype: "QQuickItem" }
- Component {
- name: "QQuickControl"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: [
- "QtQuick.Templates/Control 2.0",
- "QtQuick.Templates/Control 2.3",
- "QtQuick.Templates/Control 2.5"
- ]
- exportMetaObjectRevisions: [0, 3, 5]
- Property { name: "font"; type: "QFont" }
- Property { name: "availableWidth"; type: "double"; isReadonly: true }
- Property { name: "availableHeight"; type: "double"; isReadonly: true }
- Property { name: "padding"; type: "double" }
- Property { name: "topPadding"; type: "double" }
- Property { name: "leftPadding"; type: "double" }
- Property { name: "rightPadding"; type: "double" }
- Property { name: "bottomPadding"; type: "double" }
- Property { name: "spacing"; type: "double" }
- Property { name: "locale"; type: "QLocale" }
- Property { name: "mirrored"; type: "bool"; isReadonly: true }
- Property { name: "focusPolicy"; type: "Qt::FocusPolicy" }
- Property { name: "focusReason"; type: "Qt::FocusReason" }
- Property { name: "visualFocus"; type: "bool"; isReadonly: true }
- Property { name: "hovered"; type: "bool"; isReadonly: true }
- Property { name: "hoverEnabled"; type: "bool" }
- Property { name: "wheelEnabled"; type: "bool" }
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
- Property { name: "baselineOffset"; type: "double" }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "horizontalPadding"; revision: 5; type: "double" }
- Property { name: "verticalPadding"; revision: 5; type: "double" }
- Property { name: "implicitContentWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitContentHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "topInset"; revision: 5; type: "double" }
- Property { name: "leftInset"; revision: 5; type: "double" }
- Property { name: "rightInset"; revision: 5; type: "double" }
- Property { name: "bottomInset"; revision: 5; type: "double" }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "horizontalPaddingChanged"; revision: 5 }
- Signal { name: "verticalPaddingChanged"; revision: 5 }
- Signal { name: "implicitContentWidthChanged"; revision: 5 }
- Signal { name: "implicitContentHeightChanged"; revision: 5 }
- Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
- Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
- Signal { name: "topInsetChanged"; revision: 5 }
- Signal { name: "leftInsetChanged"; revision: 5 }
- Signal { name: "rightInsetChanged"; revision: 5 }
- Signal { name: "bottomInsetChanged"; revision: 5 }
- }
- Component {
- name: "QQuickDelayButton"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/DelayButton 2.2"]
- exportMetaObjectRevisions: [0]
- Property { name: "delay"; type: "int" }
- Property { name: "progress"; type: "double" }
- Property { name: "transition"; type: "QQuickTransition"; isPointer: true }
- Signal { name: "activated" }
- }
- Component {
- name: "QQuickDial"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/Dial 2.0",
- "QtQuick.Templates/Dial 2.2",
- "QtQuick.Templates/Dial 2.5"
- ]
- exportMetaObjectRevisions: [0, 2, 5]
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapAlways": 1,
- "SnapOnRelease": 2
- }
- }
- Enum {
- name: "InputMode"
- values: {
- "Circular": 0,
- "Horizontal": 1,
- "Vertical": 2
- }
- }
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- Property { name: "value"; type: "double" }
- Property { name: "position"; type: "double"; isReadonly: true }
- Property { name: "angle"; type: "double"; isReadonly: true }
- Property { name: "stepSize"; type: "double" }
- Property { name: "snapMode"; type: "SnapMode" }
- Property { name: "wrap"; type: "bool" }
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Property { name: "handle"; type: "QQuickItem"; isPointer: true }
- Property { name: "live"; revision: 2; type: "bool" }
- Property { name: "inputMode"; revision: 5; type: "InputMode" }
- Signal { name: "moved"; revision: 2 }
- Signal { name: "liveChanged"; revision: 2 }
- Signal { name: "inputModeChanged"; revision: 5 }
- Method { name: "increase" }
- Method { name: "decrease" }
- }
- Component {
- name: "QQuickDialog"
- defaultProperty: "contentData"
- prototype: "QQuickPopup"
- exports: [
- "QtQuick.Templates/Dialog 2.1",
- "QtQuick.Templates/Dialog 2.3",
- "QtQuick.Templates/Dialog 2.5"
- ]
- exportMetaObjectRevisions: [0, 3, 5]
- Enum {
- name: "StandardCode"
- values: {
- "Rejected": 0,
- "Accepted": 1
- }
- }
- Property { name: "title"; type: "string" }
- Property { name: "header"; type: "QQuickItem"; isPointer: true }
- Property { name: "footer"; type: "QQuickItem"; isPointer: true }
- Property { name: "standardButtons"; type: "QPlatformDialogHelper::StandardButtons" }
- Property { name: "result"; revision: 3; type: "int" }
- Property { name: "implicitHeaderWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitHeaderHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitFooterWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitFooterHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "accepted" }
- Signal { name: "rejected" }
- Signal { name: "applied"; revision: 3 }
- Signal { name: "reset"; revision: 3 }
- Signal { name: "discarded"; revision: 3 }
- Signal { name: "helpRequested"; revision: 3 }
- Signal { name: "resultChanged"; revision: 3 }
- Method { name: "accept" }
- Method { name: "reject" }
- Method {
- name: "done"
- Parameter { name: "result"; type: "int" }
- }
- Method {
- name: "standardButton"
- revision: 3
- type: "QQuickAbstractButton*"
- Parameter { name: "button"; type: "QPlatformDialogHelper::StandardButton" }
- }
- }
- Component {
- name: "QQuickDialogButtonBox"
- defaultProperty: "contentData"
- prototype: "QQuickContainer"
- exports: [
- "QtQuick.Templates/DialogButtonBox 2.1",
- "QtQuick.Templates/DialogButtonBox 2.3",
- "QtQuick.Templates/DialogButtonBox 2.5"
- ]
- exportMetaObjectRevisions: [0, 3, 5]
- attachedType: "QQuickDialogButtonBoxAttached"
- Enum {
- name: "Position"
- values: {
- "Header": 0,
- "Footer": 1
- }
- }
- Property { name: "position"; type: "Position" }
- Property { name: "alignment"; type: "Qt::Alignment" }
- Property { name: "standardButtons"; type: "QPlatformDialogHelper::StandardButtons" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "buttonLayout"; revision: 5; type: "QPlatformDialogHelper::ButtonLayout" }
- Signal { name: "accepted" }
- Signal { name: "rejected" }
- Signal { name: "helpRequested" }
- Signal {
- name: "clicked"
- Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true }
- }
- Signal { name: "applied"; revision: 3 }
- Signal { name: "reset"; revision: 3 }
- Signal { name: "discarded"; revision: 3 }
- Signal { name: "buttonLayoutChanged"; revision: 5 }
- Method {
- name: "standardButton"
- type: "QQuickAbstractButton*"
- Parameter { name: "button"; type: "QPlatformDialogHelper::StandardButton" }
- }
- }
- Component {
- name: "QQuickDialogButtonBoxAttached"
- prototype: "QObject"
- Property { name: "buttonBox"; type: "QQuickDialogButtonBox"; isReadonly: true; isPointer: true }
- Property { name: "buttonRole"; type: "QPlatformDialogHelper::ButtonRole" }
- }
- Component {
- name: "QQuickDrawer"
- defaultProperty: "contentData"
- prototype: "QQuickPopup"
- exports: [
- "QtQuick.Templates/Drawer 2.0",
- "QtQuick.Templates/Drawer 2.2"
- ]
- exportMetaObjectRevisions: [0, 2]
- Property { name: "edge"; type: "Qt::Edge" }
- Property { name: "position"; type: "double" }
- Property { name: "dragMargin"; type: "double" }
- Property { name: "interactive"; revision: 2; type: "bool" }
- Signal { name: "interactiveChanged"; revision: 2 }
- }
- Component {
- name: "QQuickFrame"
- defaultProperty: "contentData"
- prototype: "QQuickPane"
- exports: ["QtQuick.Templates/Frame 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickGroupBox"
- defaultProperty: "contentData"
- prototype: "QQuickFrame"
- exports: [
- "QtQuick.Templates/GroupBox 2.0",
- "QtQuick.Templates/GroupBox 2.5"
- ]
- exportMetaObjectRevisions: [0, 5]
- Property { name: "title"; type: "string" }
- Property { name: "label"; type: "QQuickItem"; isPointer: true }
- Property { name: "implicitLabelWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitLabelHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "implicitLabelWidthChanged"; revision: 5 }
- Signal { name: "implicitLabelHeightChanged"; revision: 5 }
- }
- Component {
- name: "QQuickIcon"
- Property { name: "name"; type: "string" }
- Property { name: "source"; type: "QUrl" }
- Property { name: "width"; type: "int" }
- Property { name: "height"; type: "int" }
- Property { name: "color"; type: "QColor" }
- }
- Component {
- name: "QQuickItemDelegate"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/ItemDelegate 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "highlighted"; type: "bool" }
- }
- Component {
- name: "QQuickLabel"
- defaultProperty: "data"
- prototype: "QQuickText"
- exports: [
- "QtQuick.Templates/Label 2.0",
- "QtQuick.Templates/Label 2.3",
- "QtQuick.Templates/Label 2.5"
- ]
- exportMetaObjectRevisions: [0, 3, 5]
- Property { name: "font"; type: "QFont" }
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "topInset"; revision: 5; type: "double" }
- Property { name: "leftInset"; revision: 5; type: "double" }
- Property { name: "rightInset"; revision: 5; type: "double" }
- Property { name: "bottomInset"; revision: 5; type: "double" }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
- Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
- Signal { name: "topInsetChanged"; revision: 5 }
- Signal { name: "leftInsetChanged"; revision: 5 }
- Signal { name: "rightInsetChanged"; revision: 5 }
- Signal { name: "bottomInsetChanged"; revision: 5 }
- }
- Component {
- name: "QQuickMenu"
- defaultProperty: "contentData"
- prototype: "QQuickPopup"
- exports: ["QtQuick.Templates/Menu 2.0", "QtQuick.Templates/Menu 2.3"]
- exportMetaObjectRevisions: [0, 3]
- Property { name: "contentModel"; type: "QVariant"; isReadonly: true }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "title"; type: "string" }
- Property { name: "count"; revision: 3; type: "int"; isReadonly: true }
- Property { name: "cascade"; revision: 3; type: "bool" }
- Property { name: "overlap"; revision: 3; type: "double" }
- Property { name: "delegate"; revision: 3; type: "QQmlComponent"; isPointer: true }
- Property { name: "currentIndex"; revision: 3; type: "int" }
- Signal {
- name: "titleChanged"
- Parameter { name: "title"; type: "string" }
- }
- Signal { name: "countChanged"; revision: 3 }
- Signal {
- name: "cascadeChanged"
- revision: 3
- Parameter { name: "cascade"; type: "bool" }
- }
- Signal { name: "overlapChanged"; revision: 3 }
- Signal { name: "delegateChanged"; revision: 3 }
- Signal { name: "currentIndexChanged"; revision: 3 }
- Method {
- name: "itemAt"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "addItem"
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "insertItem"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
- }
- Method {
- name: "moveItem"
- Parameter { name: "from"; type: "int" }
- Parameter { name: "to"; type: "int" }
- }
- Method {
- name: "removeItem"
- Parameter { name: "item"; type: "QVariant" }
- }
- Method {
- name: "takeItem"
- revision: 3
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "menuAt"
- revision: 3
- type: "QQuickMenu*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "addMenu"
- revision: 3
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "insertMenu"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "removeMenu"
- revision: 3
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "takeMenu"
- revision: 3
- type: "QQuickMenu*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "actionAt"
- revision: 3
- type: "QQuickAction*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "addAction"
- revision: 3
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- Method {
- name: "insertAction"
- revision: 3
- Parameter { name: "index"; type: "int" }
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- Method {
- name: "removeAction"
- revision: 3
- Parameter { name: "action"; type: "QQuickAction"; isPointer: true }
- }
- Method {
- name: "takeAction"
- revision: 3
- type: "QQuickAction*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "popup"
- revision: 3
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method { name: "dismiss"; revision: 3 }
- }
- Component {
- name: "QQuickMenuBar"
- defaultProperty: "contentData"
- prototype: "QQuickContainer"
- exports: ["QtQuick.Templates/MenuBar 2.3"]
- exportMetaObjectRevisions: [0]
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "contentWidth"; type: "double" }
- Property { name: "contentHeight"; type: "double" }
- Property { name: "menus"; type: "QQuickMenu"; isList: true; isReadonly: true }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Method {
- name: "menuAt"
- type: "QQuickMenu*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "addMenu"
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "insertMenu"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "removeMenu"
- Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true }
- }
- Method {
- name: "takeMenu"
- type: "QQuickMenu*"
- Parameter { name: "index"; type: "int" }
- }
- }
- Component {
- name: "QQuickMenuBarItem"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/MenuBarItem 2.3"]
- exportMetaObjectRevisions: [0]
- Property { name: "menuBar"; type: "QQuickMenuBar"; isReadonly: true; isPointer: true }
- Property { name: "menu"; type: "QQuickMenu"; isPointer: true }
- Property { name: "highlighted"; type: "bool" }
- Signal { name: "triggered" }
- }
- Component {
- name: "QQuickMenuItem"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: [
- "QtQuick.Templates/MenuItem 2.0",
- "QtQuick.Templates/MenuItem 2.3"
- ]
- exportMetaObjectRevisions: [0, 3]
- Property { name: "highlighted"; type: "bool" }
- Property { name: "arrow"; revision: 3; type: "QQuickItem"; isPointer: true }
- Property { name: "menu"; revision: 3; type: "QQuickMenu"; isReadonly: true; isPointer: true }
- Property { name: "subMenu"; revision: 3; type: "QQuickMenu"; isReadonly: true; isPointer: true }
- Signal { name: "triggered" }
- Signal { name: "arrowChanged"; revision: 3 }
- Signal { name: "menuChanged"; revision: 3 }
- Signal { name: "subMenuChanged"; revision: 3 }
- }
- Component {
- name: "QQuickMenuSeparator"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/MenuSeparator 2.1"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickOverlay"
- defaultProperty: "data"
- prototype: "QQuickItem"
- exports: ["QtQuick.Templates/Overlay 2.3"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- attachedType: "QQuickOverlayAttached"
- Property { name: "modal"; type: "QQmlComponent"; isPointer: true }
- Property { name: "modeless"; type: "QQmlComponent"; isPointer: true }
- Signal { name: "pressed" }
- Signal { name: "released" }
- }
- Component {
- name: "QQuickOverlayAttached"
- prototype: "QObject"
- Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true }
- Property { name: "modal"; type: "QQmlComponent"; isPointer: true }
- Property { name: "modeless"; type: "QQmlComponent"; isPointer: true }
- Signal { name: "pressed" }
- Signal { name: "released" }
- }
- Component {
- name: "QQuickPage"
- defaultProperty: "contentData"
- prototype: "QQuickPane"
- exports: [
- "QtQuick.Templates/Page 2.0",
- "QtQuick.Templates/Page 2.1",
- "QtQuick.Templates/Page 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 5]
- Property { name: "title"; type: "string" }
- Property { name: "header"; type: "QQuickItem"; isPointer: true }
- Property { name: "footer"; type: "QQuickItem"; isPointer: true }
- Property { name: "contentWidth"; revision: 1; type: "double" }
- Property { name: "contentHeight"; revision: 1; type: "double" }
- Property { name: "implicitHeaderWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitHeaderHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitFooterWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitFooterHeight"; revision: 5; type: "double"; isReadonly: true }
- }
- Component {
- name: "QQuickPageIndicator"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/PageIndicator 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "count"; type: "int" }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "interactive"; type: "bool" }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- }
- Component {
- name: "QQuickPane"
- defaultProperty: "contentData"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/Pane 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "contentWidth"; type: "double" }
- Property { name: "contentHeight"; type: "double" }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
- }
- Component {
- name: "QQuickPopup"
- defaultProperty: "contentData"
- prototype: "QObject"
- exports: [
- "QtQuick.Templates/Popup 2.0",
- "QtQuick.Templates/Popup 2.1",
- "QtQuick.Templates/Popup 2.3",
- "QtQuick.Templates/Popup 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 3, 5]
- Enum {
- name: "ClosePolicy"
- values: {
- "NoAutoClose": 0,
- "CloseOnPressOutside": 1,
- "CloseOnPressOutsideParent": 2,
- "CloseOnReleaseOutside": 4,
- "CloseOnReleaseOutsideParent": 8,
- "CloseOnEscape": 16
- }
- }
- Enum {
- name: "TransformOrigin"
- values: {
- "TopLeft": 0,
- "Top": 1,
- "TopRight": 2,
- "Left": 3,
- "Center": 4,
- "Right": 5,
- "BottomLeft": 6,
- "Bottom": 7,
- "BottomRight": 8
- }
- }
- Property { name: "x"; type: "double" }
- Property { name: "y"; type: "double" }
- Property { name: "z"; type: "double" }
- Property { name: "width"; type: "double" }
- Property { name: "height"; type: "double" }
- Property { name: "implicitWidth"; type: "double" }
- Property { name: "implicitHeight"; type: "double" }
- Property { name: "contentWidth"; type: "double" }
- Property { name: "contentHeight"; type: "double" }
- Property { name: "availableWidth"; type: "double"; isReadonly: true }
- Property { name: "availableHeight"; type: "double"; isReadonly: true }
- Property { name: "margins"; type: "double" }
- Property { name: "topMargin"; type: "double" }
- Property { name: "leftMargin"; type: "double" }
- Property { name: "rightMargin"; type: "double" }
- Property { name: "bottomMargin"; type: "double" }
- Property { name: "padding"; type: "double" }
- Property { name: "topPadding"; type: "double" }
- Property { name: "leftPadding"; type: "double" }
- Property { name: "rightPadding"; type: "double" }
- Property { name: "bottomPadding"; type: "double" }
- Property { name: "locale"; type: "QLocale" }
- Property { name: "font"; type: "QFont" }
- Property { name: "parent"; type: "QQuickItem"; isPointer: true }
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "contentItem"; type: "QQuickItem"; isPointer: true }
- Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true }
- Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
- Property { name: "clip"; type: "bool" }
- Property { name: "focus"; type: "bool" }
- Property { name: "activeFocus"; type: "bool"; isReadonly: true }
- Property { name: "modal"; type: "bool" }
- Property { name: "dim"; type: "bool" }
- Property { name: "visible"; type: "bool" }
- Property { name: "opacity"; type: "double" }
- Property { name: "scale"; type: "double" }
- Property { name: "closePolicy"; type: "ClosePolicy" }
- Property { name: "transformOrigin"; type: "TransformOrigin" }
- Property { name: "enter"; type: "QQuickTransition"; isPointer: true }
- Property { name: "exit"; type: "QQuickTransition"; isPointer: true }
- Property { name: "spacing"; revision: 1; type: "double" }
- Property { name: "opened"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "mirrored"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "enabled"; revision: 3; type: "bool" }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "horizontalPadding"; type: "double" }
- Property { name: "verticalPadding"; type: "double" }
- Property {
- name: "anchors"
- revision: 5
- type: "QQuickPopupAnchors"
- isReadonly: true
- isPointer: true
- }
- Property { name: "implicitContentWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitContentHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "topInset"; revision: 5; type: "double" }
- Property { name: "leftInset"; revision: 5; type: "double" }
- Property { name: "rightInset"; revision: 5; type: "double" }
- Property { name: "bottomInset"; revision: 5; type: "double" }
- Signal { name: "opened" }
- Signal { name: "closed" }
- Signal { name: "aboutToShow" }
- Signal { name: "aboutToHide" }
- Signal {
- name: "windowChanged"
- Parameter { name: "window"; type: "QQuickWindow"; isPointer: true }
- }
- Signal { name: "spacingChanged"; revision: 1 }
- Signal { name: "openedChanged"; revision: 3 }
- Signal { name: "mirroredChanged"; revision: 3 }
- Signal { name: "enabledChanged"; revision: 3 }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "horizontalPaddingChanged"; revision: 5 }
- Signal { name: "verticalPaddingChanged"; revision: 5 }
- Signal { name: "implicitContentWidthChanged"; revision: 5 }
- Signal { name: "implicitContentHeightChanged"; revision: 5 }
- Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
- Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
- Signal { name: "topInsetChanged"; revision: 5 }
- Signal { name: "leftInsetChanged"; revision: 5 }
- Signal { name: "rightInsetChanged"; revision: 5 }
- Signal { name: "bottomInsetChanged"; revision: 5 }
- Method { name: "open" }
- Method { name: "close" }
- Method {
- name: "forceActiveFocus"
- Parameter { name: "reason"; type: "Qt::FocusReason" }
- }
- Method { name: "forceActiveFocus" }
- }
- Component {
- name: "QQuickPopupAnchors"
- prototype: "QObject"
- Property { name: "centerIn"; type: "QQuickItem"; isPointer: true }
- }
- Component { name: "QQuickPopupItem"; defaultProperty: "contentData"; prototype: "QQuickPage" }
- Component {
- name: "QQuickProgressBar"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/ProgressBar 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- Property { name: "value"; type: "double" }
- Property { name: "position"; type: "double"; isReadonly: true }
- Property { name: "visualPosition"; type: "double"; isReadonly: true }
- Property { name: "indeterminate"; type: "bool" }
- }
- Component {
- name: "QQuickRadioButton"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/RadioButton 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickRadioDelegate"
- defaultProperty: "data"
- prototype: "QQuickItemDelegate"
- exports: ["QtQuick.Templates/RadioDelegate 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickRangeSlider"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/RangeSlider 2.0",
- "QtQuick.Templates/RangeSlider 2.1",
- "QtQuick.Templates/RangeSlider 2.2",
- "QtQuick.Templates/RangeSlider 2.3",
- "QtQuick.Templates/RangeSlider 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 2, 3, 5]
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapAlways": 1,
- "SnapOnRelease": 2
- }
- }
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- Property { name: "first"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true }
- Property { name: "second"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true }
- Property { name: "stepSize"; type: "double" }
- Property { name: "snapMode"; type: "SnapMode" }
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "live"; revision: 2; type: "bool" }
- Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "touchDragThreshold"; revision: 5; type: "double" }
- Signal { name: "liveChanged"; revision: 2 }
- Signal { name: "touchDragThresholdChanged"; revision: 5 }
- Method {
- name: "setValues"
- Parameter { name: "firstValue"; type: "double" }
- Parameter { name: "secondValue"; type: "double" }
- }
- Method {
- name: "valueAt"
- revision: 5
- type: "double"
- Parameter { name: "position"; type: "double" }
- }
- }
- Component {
- name: "QQuickRangeSliderNode"
- prototype: "QObject"
- Property { name: "value"; type: "double" }
- Property { name: "position"; type: "double"; isReadonly: true }
- Property { name: "visualPosition"; type: "double"; isReadonly: true }
- Property { name: "handle"; type: "QQuickItem"; isPointer: true }
- Property { name: "pressed"; type: "bool" }
- Property { name: "hovered"; revision: 1; type: "bool" }
- Property { name: "implicitHandleWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitHandleHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "hoveredChanged"; revision: 1 }
- Signal { name: "moved" }
- Method { name: "increase" }
- Method { name: "decrease" }
- }
- Component {
- name: "QQuickRoundButton"
- defaultProperty: "data"
- prototype: "QQuickButton"
- exports: ["QtQuick.Templates/RoundButton 2.1"]
- exportMetaObjectRevisions: [0]
- Property { name: "radius"; type: "double" }
- }
- Component {
- name: "QQuickScrollBar"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/ScrollBar 2.0",
- "QtQuick.Templates/ScrollBar 2.2",
- "QtQuick.Templates/ScrollBar 2.3",
- "QtQuick.Templates/ScrollBar 2.4"
- ]
- exportMetaObjectRevisions: [0, 2, 3, 4]
- attachedType: "QQuickScrollBarAttached"
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapAlways": 1,
- "SnapOnRelease": 2
- }
- }
- Enum {
- name: "Policy"
- values: {
- "AsNeeded": 0,
- "AlwaysOff": 1,
- "AlwaysOn": 2
- }
- }
- Property { name: "size"; type: "double" }
- Property { name: "position"; type: "double" }
- Property { name: "stepSize"; type: "double" }
- Property { name: "active"; type: "bool" }
- Property { name: "pressed"; type: "bool" }
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "snapMode"; revision: 2; type: "SnapMode" }
- Property { name: "interactive"; revision: 2; type: "bool" }
- Property { name: "policy"; revision: 2; type: "Policy" }
- Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "minimumSize"; revision: 4; type: "double" }
- Property { name: "visualSize"; revision: 4; type: "double"; isReadonly: true }
- Property { name: "visualPosition"; revision: 4; type: "double"; isReadonly: true }
- Signal { name: "snapModeChanged"; revision: 2 }
- Signal { name: "interactiveChanged"; revision: 2 }
- Signal { name: "policyChanged"; revision: 2 }
- Signal { name: "minimumSizeChanged"; revision: 4 }
- Signal { name: "visualSizeChanged"; revision: 4 }
- Signal { name: "visualPositionChanged"; revision: 4 }
- Method { name: "increase" }
- Method { name: "decrease" }
- Method {
- name: "setSize"
- Parameter { name: "size"; type: "double" }
- }
- Method {
- name: "setPosition"
- Parameter { name: "position"; type: "double" }
- }
- }
- Component {
- name: "QQuickScrollBarAttached"
- prototype: "QObject"
- Property { name: "horizontal"; type: "QQuickScrollBar"; isPointer: true }
- Property { name: "vertical"; type: "QQuickScrollBar"; isPointer: true }
- }
- Component {
- name: "QQuickScrollIndicator"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/ScrollIndicator 2.0",
- "QtQuick.Templates/ScrollIndicator 2.3",
- "QtQuick.Templates/ScrollIndicator 2.4"
- ]
- exportMetaObjectRevisions: [0, 3, 4]
- attachedType: "QQuickScrollIndicatorAttached"
- Property { name: "size"; type: "double" }
- Property { name: "position"; type: "double" }
- Property { name: "active"; type: "bool" }
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "minimumSize"; revision: 4; type: "double" }
- Property { name: "visualSize"; revision: 4; type: "double"; isReadonly: true }
- Property { name: "visualPosition"; revision: 4; type: "double"; isReadonly: true }
- Signal { name: "minimumSizeChanged"; revision: 4 }
- Signal { name: "visualSizeChanged"; revision: 4 }
- Signal { name: "visualPositionChanged"; revision: 4 }
- Method {
- name: "setSize"
- Parameter { name: "size"; type: "double" }
- }
- Method {
- name: "setPosition"
- Parameter { name: "position"; type: "double" }
- }
- }
- Component {
- name: "QQuickScrollIndicatorAttached"
- prototype: "QObject"
- Property { name: "horizontal"; type: "QQuickScrollIndicator"; isPointer: true }
- Property { name: "vertical"; type: "QQuickScrollIndicator"; isPointer: true }
- }
- Component {
- name: "QQuickScrollView"
- defaultProperty: "contentData"
- prototype: "QQuickPane"
- exports: ["QtQuick.Templates/ScrollView 2.2"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickSlider"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/Slider 2.0",
- "QtQuick.Templates/Slider 2.1",
- "QtQuick.Templates/Slider 2.2",
- "QtQuick.Templates/Slider 2.3",
- "QtQuick.Templates/Slider 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 2, 3, 5]
- Enum {
- name: "SnapMode"
- values: {
- "NoSnap": 0,
- "SnapAlways": 1,
- "SnapOnRelease": 2
- }
- }
- Property { name: "from"; type: "double" }
- Property { name: "to"; type: "double" }
- Property { name: "value"; type: "double" }
- Property { name: "position"; type: "double"; isReadonly: true }
- Property { name: "visualPosition"; type: "double"; isReadonly: true }
- Property { name: "stepSize"; type: "double" }
- Property { name: "snapMode"; type: "SnapMode" }
- Property { name: "pressed"; type: "bool" }
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "handle"; type: "QQuickItem"; isPointer: true }
- Property { name: "live"; revision: 2; type: "bool" }
- Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "touchDragThreshold"; revision: 5; type: "double" }
- Property { name: "implicitHandleWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitHandleHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "moved"; revision: 2 }
- Signal { name: "liveChanged"; revision: 2 }
- Signal { name: "touchDragThresholdChanged"; revision: 5 }
- Signal { name: "implicitHandleWidthChanged"; revision: 5 }
- Signal { name: "implicitHandleHeightChanged"; revision: 5 }
- Method { name: "increase" }
- Method { name: "decrease" }
- Method {
- name: "valueAt"
- revision: 1
- type: "double"
- Parameter { name: "position"; type: "double" }
- }
- }
- Component {
- name: "QQuickSpinBox"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/SpinBox 2.0",
- "QtQuick.Templates/SpinBox 2.1",
- "QtQuick.Templates/SpinBox 2.2",
- "QtQuick.Templates/SpinBox 2.3",
- "QtQuick.Templates/SpinBox 2.4",
- "QtQuick.Templates/SpinBox 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5]
- Property { name: "from"; type: "int" }
- Property { name: "to"; type: "int" }
- Property { name: "value"; type: "int" }
- Property { name: "stepSize"; type: "int" }
- Property { name: "editable"; type: "bool" }
- Property { name: "validator"; type: "QValidator"; isPointer: true }
- Property { name: "textFromValue"; type: "QJSValue" }
- Property { name: "valueFromText"; type: "QJSValue" }
- Property { name: "up"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true }
- Property { name: "down"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true }
- Property { name: "inputMethodHints"; revision: 2; type: "Qt::InputMethodHints" }
- Property { name: "inputMethodComposing"; revision: 2; type: "bool"; isReadonly: true }
- Property { name: "wrap"; revision: 3; type: "bool" }
- Property { name: "displayText"; revision: 4; type: "string"; isReadonly: true }
- Signal { name: "valueModified"; revision: 2 }
- Signal { name: "inputMethodHintsChanged"; revision: 2 }
- Signal { name: "inputMethodComposingChanged"; revision: 2 }
- Signal { name: "wrapChanged"; revision: 3 }
- Signal { name: "displayTextChanged"; revision: 4 }
- Method { name: "increase" }
- Method { name: "decrease" }
- }
- Component {
- name: "QQuickSpinButton"
- prototype: "QObject"
- Property { name: "pressed"; type: "bool" }
- Property { name: "indicator"; type: "QQuickItem"; isPointer: true }
- Property { name: "hovered"; revision: 1; type: "bool" }
- Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true }
- Signal { name: "hoveredChanged"; revision: 1 }
- Signal { name: "implicitIndicatorWidthChanged"; revision: 5 }
- Signal { name: "implicitIndicatorHeightChanged"; revision: 5 }
- }
- Component {
- name: "QQuickStackView"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/StackView 2.0",
- "QtQuick.Templates/StackView 2.1"
- ]
- exportMetaObjectRevisions: [0, 1]
- attachedType: "QQuickStackViewAttached"
- Enum {
- name: "Status"
- values: {
- "Inactive": 0,
- "Deactivating": 1,
- "Activating": 2,
- "Active": 3
- }
- }
- Enum {
- name: "LoadBehavior"
- values: {
- "DontLoad": 0,
- "ForceLoad": 1
- }
- }
- Enum {
- name: "Operation"
- values: {
- "Transition": -1,
- "Immediate": 0,
- "PushTransition": 1,
- "ReplaceTransition": 2,
- "PopTransition": 3
- }
- }
- Property { name: "busy"; type: "bool"; isReadonly: true }
- Property { name: "depth"; type: "int"; isReadonly: true }
- Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "initialItem"; type: "QJSValue" }
- Property { name: "popEnter"; type: "QQuickTransition"; isPointer: true }
- Property { name: "popExit"; type: "QQuickTransition"; isPointer: true }
- Property { name: "pushEnter"; type: "QQuickTransition"; isPointer: true }
- Property { name: "pushExit"; type: "QQuickTransition"; isPointer: true }
- Property { name: "replaceEnter"; type: "QQuickTransition"; isPointer: true }
- Property { name: "replaceExit"; type: "QQuickTransition"; isPointer: true }
- Property { name: "empty"; revision: 3; type: "bool"; isReadonly: true }
- Signal { name: "emptyChanged"; revision: 3 }
- Method {
- name: "clear"
- Parameter { name: "operation"; type: "Operation" }
- }
- Method { name: "clear" }
- Method {
- name: "get"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- Parameter { name: "behavior"; type: "LoadBehavior" }
- }
- Method {
- name: "get"
- type: "QQuickItem*"
- Parameter { name: "index"; type: "int" }
- }
- Method {
- name: "find"
- type: "QQuickItem*"
- Parameter { name: "callback"; type: "QJSValue" }
- Parameter { name: "behavior"; type: "LoadBehavior" }
- }
- Method {
- name: "find"
- type: "QQuickItem*"
- Parameter { name: "callback"; type: "QJSValue" }
- }
- Method {
- name: "push"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "pop"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- Method {
- name: "replace"
- Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
- }
- }
- Component {
- name: "QQuickStackViewAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- Property { name: "view"; type: "QQuickStackView"; isReadonly: true; isPointer: true }
- Property { name: "status"; type: "QQuickStackView::Status"; isReadonly: true }
- Property { name: "visible"; type: "bool" }
- Signal { name: "activated" }
- Signal { name: "activating" }
- Signal { name: "deactivated" }
- Signal { name: "deactivating" }
- Signal { name: "removed" }
- }
- Component {
- name: "QQuickSwipe"
- prototype: "QObject"
- Property { name: "position"; type: "double" }
- Property { name: "complete"; type: "bool"; isReadonly: true }
- Property { name: "left"; type: "QQmlComponent"; isPointer: true }
- Property { name: "behind"; type: "QQmlComponent"; isPointer: true }
- Property { name: "right"; type: "QQmlComponent"; isPointer: true }
- Property { name: "leftItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "behindItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "rightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "enabled"; type: "bool" }
- Property { name: "transition"; type: "QQuickTransition"; isPointer: true }
- Signal { name: "completed" }
- Signal { name: "opened" }
- Signal { name: "closed" }
- Method { name: "close"; revision: 1 }
- Method {
- name: "open"
- revision: 2
- Parameter { name: "side"; type: "QQuickSwipeDelegate::Side" }
- }
- }
- Component {
- name: "QQuickSwipeDelegate"
- defaultProperty: "data"
- prototype: "QQuickItemDelegate"
- exports: [
- "QtQuick.Templates/SwipeDelegate 2.0",
- "QtQuick.Templates/SwipeDelegate 2.1",
- "QtQuick.Templates/SwipeDelegate 2.2"
- ]
- exportMetaObjectRevisions: [0, 1, 2]
- attachedType: "QQuickSwipeDelegateAttached"
- Enum {
- name: "Side"
- values: {
- "Left": 1,
- "Right": -1
- }
- }
- Property { name: "swipe"; type: "QQuickSwipe"; isReadonly: true; isPointer: true }
- }
- Component {
- name: "QQuickSwipeDelegateAttached"
- prototype: "QObject"
- Property { name: "pressed"; type: "bool"; isReadonly: true }
- Signal { name: "clicked" }
- }
- Component {
- name: "QQuickSwipeView"
- defaultProperty: "contentData"
- prototype: "QQuickContainer"
- exports: [
- "QtQuick.Templates/SwipeView 2.0",
- "QtQuick.Templates/SwipeView 2.1",
- "QtQuick.Templates/SwipeView 2.2"
- ]
- exportMetaObjectRevisions: [0, 1, 2]
- attachedType: "QQuickSwipeViewAttached"
- Property { name: "interactive"; revision: 1; type: "bool" }
- Property { name: "orientation"; revision: 2; type: "Qt::Orientation" }
- Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true }
- Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true }
- Signal { name: "interactiveChanged"; revision: 1 }
- Signal { name: "orientationChanged"; revision: 2 }
- }
- Component {
- name: "QQuickSwipeViewAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- Property { name: "isCurrentItem"; type: "bool"; isReadonly: true }
- Property { name: "view"; type: "QQuickSwipeView"; isReadonly: true; isPointer: true }
- Property { name: "isNextItem"; revision: 1; type: "bool"; isReadonly: true }
- Property { name: "isPreviousItem"; revision: 1; type: "bool"; isReadonly: true }
- }
- Component {
- name: "QQuickSwitch"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/Switch 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "position"; type: "double" }
- Property { name: "visualPosition"; type: "double"; isReadonly: true }
- }
- Component {
- name: "QQuickSwitchDelegate"
- defaultProperty: "data"
- prototype: "QQuickItemDelegate"
- exports: ["QtQuick.Templates/SwitchDelegate 2.0"]
- exportMetaObjectRevisions: [0]
- Property { name: "position"; type: "double" }
- Property { name: "visualPosition"; type: "double"; isReadonly: true }
- }
- Component {
- name: "QQuickTabBar"
- defaultProperty: "contentData"
- prototype: "QQuickContainer"
- exports: [
- "QtQuick.Templates/TabBar 2.0",
- "QtQuick.Templates/TabBar 2.2"
- ]
- exportMetaObjectRevisions: [0, 2]
- attachedType: "QQuickTabBarAttached"
- Enum {
- name: "Position"
- values: {
- "Header": 0,
- "Footer": 1
- }
- }
- Property { name: "position"; type: "Position" }
- Property { name: "contentWidth"; revision: 2; type: "double" }
- Property { name: "contentHeight"; revision: 2; type: "double" }
- }
- Component {
- name: "QQuickTabBarAttached"
- prototype: "QObject"
- Property { name: "index"; type: "int"; isReadonly: true }
- Property { name: "tabBar"; type: "QQuickTabBar"; isReadonly: true; isPointer: true }
- Property { name: "position"; type: "QQuickTabBar::Position"; isReadonly: true }
- }
- Component {
- name: "QQuickTabButton"
- defaultProperty: "data"
- prototype: "QQuickAbstractButton"
- exports: ["QtQuick.Templates/TabButton 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickTextArea"
- defaultProperty: "data"
- prototype: "QQuickTextEdit"
- exports: [
- "QtQuick.Templates/TextArea 2.0",
- "QtQuick.Templates/TextArea 2.1",
- "QtQuick.Templates/TextArea 2.3",
- "QtQuick.Templates/TextArea 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 3, 5]
- attachedType: "QQuickTextAreaAttached"
- Property { name: "font"; type: "QFont" }
- Property { name: "implicitWidth"; type: "double" }
- Property { name: "implicitHeight"; type: "double" }
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "placeholderText"; type: "string" }
- Property { name: "focusReason"; type: "Qt::FocusReason" }
- Property { name: "hovered"; revision: 1; type: "bool"; isReadonly: true }
- Property { name: "hoverEnabled"; revision: 1; type: "bool" }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "placeholderTextColor"; revision: 5; type: "QColor" }
- Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "topInset"; revision: 5; type: "double" }
- Property { name: "leftInset"; revision: 5; type: "double" }
- Property { name: "rightInset"; revision: 5; type: "double" }
- Property { name: "bottomInset"; revision: 5; type: "double" }
- Signal { name: "implicitWidthChanged3" }
- Signal { name: "implicitHeightChanged3" }
- Signal {
- name: "pressAndHold"
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "pressed"
- revision: 1
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "released"
- revision: 1
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal { name: "hoveredChanged"; revision: 1 }
- Signal { name: "hoverEnabledChanged"; revision: 1 }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "placeholderTextColorChanged"; revision: 5 }
- Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
- Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
- Signal { name: "topInsetChanged"; revision: 5 }
- Signal { name: "leftInsetChanged"; revision: 5 }
- Signal { name: "rightInsetChanged"; revision: 5 }
- Signal { name: "bottomInsetChanged"; revision: 5 }
- }
- Component {
- name: "QQuickTextAreaAttached"
- prototype: "QObject"
- Property { name: "flickable"; type: "QQuickTextArea"; isPointer: true }
- }
- Component {
- name: "QQuickTextField"
- defaultProperty: "data"
- prototype: "QQuickTextInput"
- exports: [
- "QtQuick.Templates/TextField 2.0",
- "QtQuick.Templates/TextField 2.1",
- "QtQuick.Templates/TextField 2.3",
- "QtQuick.Templates/TextField 2.5"
- ]
- exportMetaObjectRevisions: [0, 1, 3, 5]
- Property { name: "font"; type: "QFont" }
- Property { name: "implicitWidth"; type: "double" }
- Property { name: "implicitHeight"; type: "double" }
- Property { name: "background"; type: "QQuickItem"; isPointer: true }
- Property { name: "placeholderText"; type: "string" }
- Property { name: "focusReason"; type: "Qt::FocusReason" }
- Property { name: "hovered"; revision: 1; type: "bool"; isReadonly: true }
- Property { name: "hoverEnabled"; revision: 1; type: "bool" }
- Property { name: "palette"; revision: 3; type: "QPalette" }
- Property { name: "placeholderTextColor"; revision: 5; type: "QColor" }
- Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true }
- Property { name: "topInset"; revision: 5; type: "double" }
- Property { name: "leftInset"; revision: 5; type: "double" }
- Property { name: "rightInset"; revision: 5; type: "double" }
- Property { name: "bottomInset"; revision: 5; type: "double" }
- Signal { name: "implicitWidthChanged3" }
- Signal { name: "implicitHeightChanged3" }
- Signal {
- name: "pressAndHold"
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "pressed"
- revision: 1
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal {
- name: "released"
- revision: 1
- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
- }
- Signal { name: "hoveredChanged"; revision: 1 }
- Signal { name: "hoverEnabledChanged"; revision: 1 }
- Signal { name: "paletteChanged"; revision: 3 }
- Signal { name: "placeholderTextColorChanged"; revision: 5 }
- Signal { name: "implicitBackgroundWidthChanged"; revision: 5 }
- Signal { name: "implicitBackgroundHeightChanged"; revision: 5 }
- Signal { name: "topInsetChanged"; revision: 5 }
- Signal { name: "leftInsetChanged"; revision: 5 }
- Signal { name: "rightInsetChanged"; revision: 5 }
- Signal { name: "bottomInsetChanged"; revision: 5 }
- }
- Component {
- name: "QQuickToolBar"
- defaultProperty: "contentData"
- prototype: "QQuickPane"
- exports: ["QtQuick.Templates/ToolBar 2.0"]
- exportMetaObjectRevisions: [0]
- Enum {
- name: "Position"
- values: {
- "Header": 0,
- "Footer": 1
- }
- }
- Property { name: "position"; type: "Position" }
- }
- Component {
- name: "QQuickToolButton"
- defaultProperty: "data"
- prototype: "QQuickButton"
- exports: ["QtQuick.Templates/ToolButton 2.0"]
- exportMetaObjectRevisions: [0]
- }
- Component {
- name: "QQuickToolSeparator"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: ["QtQuick.Templates/ToolSeparator 2.1"]
- exportMetaObjectRevisions: [0]
- Property { name: "orientation"; type: "Qt::Orientation" }
- Property { name: "horizontal"; type: "bool"; isReadonly: true }
- Property { name: "vertical"; type: "bool"; isReadonly: true }
- }
- Component {
- name: "QQuickToolTip"
- defaultProperty: "contentData"
- prototype: "QQuickPopup"
- exports: [
- "QtQuick.Templates/ToolTip 2.0",
- "QtQuick.Templates/ToolTip 2.5"
- ]
- exportMetaObjectRevisions: [0, 5]
- attachedType: "QQuickToolTipAttached"
- Property { name: "delay"; type: "int" }
- Property { name: "timeout"; type: "int" }
- Property { name: "text"; type: "string" }
- Method {
- name: "show"
- revision: 5
- Parameter { name: "text"; type: "string" }
- Parameter { name: "ms"; type: "int" }
- }
- Method {
- name: "show"
- revision: 5
- Parameter { name: "text"; type: "string" }
- }
- Method { name: "hide"; revision: 5 }
- }
- Component {
- name: "QQuickToolTipAttached"
- prototype: "QObject"
- Property { name: "text"; type: "string" }
- Property { name: "delay"; type: "int" }
- Property { name: "timeout"; type: "int" }
- Property { name: "visible"; type: "bool" }
- Property { name: "toolTip"; type: "QQuickToolTip"; isReadonly: true; isPointer: true }
- Method {
- name: "show"
- Parameter { name: "text"; type: "string" }
- Parameter { name: "ms"; type: "int" }
- }
- Method {
- name: "show"
- Parameter { name: "text"; type: "string" }
- }
- Method { name: "hide" }
- }
- Component {
- name: "QQuickTumbler"
- defaultProperty: "data"
- prototype: "QQuickControl"
- exports: [
- "QtQuick.Templates/Tumbler 2.0",
- "QtQuick.Templates/Tumbler 2.1",
- "QtQuick.Templates/Tumbler 2.2"
- ]
- exportMetaObjectRevisions: [0, 1, 2]
- attachedType: "QQuickTumblerAttached"
- Enum {
- name: "PositionMode"
- values: {
- "Beginning": 0,
- "Center": 1,
- "End": 2,
- "Visible": 3,
- "Contain": 4,
- "SnapPosition": 5
- }
- }
- Property { name: "model"; type: "QVariant" }
- Property { name: "count"; type: "int"; isReadonly: true }
- Property { name: "currentIndex"; type: "int" }
- Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
- Property { name: "visibleItemCount"; type: "int" }
- Property { name: "wrap"; revision: 1; type: "bool" }
- Property { name: "moving"; revision: 2; type: "bool"; isReadonly: true }
- Signal { name: "wrapChanged"; revision: 1 }
- Signal { name: "movingChanged"; revision: 2 }
- Method {
- name: "positionViewAtIndex"
- revision: 5
- Parameter { name: "index"; type: "int" }
- Parameter { name: "mode"; type: "PositionMode" }
- }
- }
- Component {
- name: "QQuickTumblerAttached"
- prototype: "QObject"
- Property { name: "tumbler"; type: "QQuickTumbler"; isReadonly: true; isPointer: true }
- Property { name: "displacement"; type: "double"; isReadonly: true }
- }
}
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp
index 5e9f253d..260e7297 100644
--- a/src/imports/controls/qtquickcontrols2plugin.cpp
+++ b/src/imports/controls/qtquickcontrols2plugin.cpp
@@ -56,6 +56,7 @@
#include <QtQuickControls2/private/qquicktumblerview_p.h>
#endif
#include <QtQuickTemplates2/private/qquickoverlay_p.h>
+#include <QtQuickTemplates2/private/qquicksplitview_p.h>
#include <QtQuickControls2/private/qquickclippedtext_p.h>
#include <QtQuickControls2/private/qquickitemgroup_p.h>
#include <QtQuickTemplates2/private/qquicktheme_p_p.h>
@@ -192,6 +193,11 @@ void QtQuickControls2Plugin::registerTypes(const char *uri)
qmlRegisterType(resolvedUrl(QStringLiteral("MenuBarItem.qml")), uri, 2, 3, "MenuBarItem");
qmlRegisterUncreatableType<QQuickOverlay>(uri, 2, 3, "Overlay", QStringLiteral("Overlay is only available as an attached property."));
+ // QtQuick.Controls 2.13 (new types in Qt 5.13)
+ qmlRegisterType(resolvedUrl(QStringLiteral("SplitView.qml")), uri, 2, 13, "SplitView");
+ qmlRegisterUncreatableType<QQuickSplitHandleAttached>(uri, 2, 13, "SplitHandle",
+ QStringLiteral("SplitHandle is only available as an attached property."));
+
// Register the latest version, even if there are no new types or new revisions for existing types yet.
// Before Qt 5.12, we would do the following:
//
diff --git a/src/imports/controls/universal/SplitView.qml b/src/imports/controls/universal/SplitView.qml
new file mode 100644
index 00000000..a4ed22dd
--- /dev/null
+++ b/src/imports/controls/universal/SplitView.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.13
+import QtQuick.Templates 2.13 as T
+import QtQuick.Controls 2.13
+import QtQuick.Controls.impl 2.13
+import QtQuick.Controls.Universal 2.13
+
+T.SplitView {
+ id: control
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ handle: Rectangle {
+ implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width
+ implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6
+ color: T.SplitHandle.pressed ? control.Universal.baseMediumColor
+ : (T.SplitHandle.hovered ? control.Universal.baseMediumLowColor : control.Universal.chromeHighColor)
+ }
+}
diff --git a/src/imports/controls/universal/dependencies.json b/src/imports/controls/universal/dependencies.json
new file mode 100644
index 00000000..21ded052
--- /dev/null
+++ b/src/imports/controls/universal/dependencies.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "QtQuick.Controls",
+ "type": "module",
+ "version": "2.0"
+ }
+]
diff --git a/src/imports/controls/universal/plugins.qmltypes b/src/imports/controls/universal/plugins.qmltypes
index 979e8437..c80ff1d4 100644
--- a/src/imports/controls/universal/plugins.qmltypes
+++ b/src/imports/controls/universal/plugins.qmltypes
@@ -4,12 +4,38 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtQuick.Controls.Universal 2.3'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Universal 2.13'
Module {
- dependencies: []
+ dependencies: ["QtQuick.Controls 2.0"]
Component { name: "QQuickAttachedObject"; prototype: "QObject" }
Component {
+ name: "QQuickUniversalBusyIndicator"
+ defaultProperty: "data"
+ prototype: "QQuickItem"
+ exports: ["QtQuick.Controls.Universal.impl/BusyIndicatorImpl 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "count"; type: "int" }
+ Property { name: "color"; type: "QColor" }
+ }
+ Component {
+ name: "QQuickUniversalFocusRectangle"
+ defaultProperty: "data"
+ prototype: "QQuickPaintedItem"
+ exports: ["QtQuick.Controls.Universal.impl/FocusRectangle 2.0"]
+ exportMetaObjectRevisions: [0]
+ }
+ Component {
+ name: "QQuickUniversalProgressBar"
+ defaultProperty: "data"
+ prototype: "QQuickItem"
+ exports: ["QtQuick.Controls.Universal.impl/ProgressBarImpl 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "color"; type: "QColor" }
+ Property { name: "progress"; type: "double" }
+ Property { name: "indeterminate"; type: "bool" }
+ }
+ Component {
name: "QQuickUniversalStyle"
prototype: "QQuickAttachedObject"
exports: ["QtQuick.Controls.Universal/Universal 2.0"]
@@ -52,6 +78,30 @@ Module {
Property { name: "accent"; type: "QVariant" }
Property { name: "foreground"; type: "QVariant" }
Property { name: "background"; type: "QVariant" }
+ Property { name: "altHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "altLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "altMediumColor"; type: "QColor"; isReadonly: true }
+ Property { name: "altMediumHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "altMediumLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "baseHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "baseLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "baseMediumColor"; type: "QColor"; isReadonly: true }
+ Property { name: "baseMediumHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "baseMediumLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeAltLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeBlackHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeBlackLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeBlackMediumLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeBlackMediumColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeDisabledHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeDisabledLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeHighColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeMediumColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeMediumLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "chromeWhiteColor"; type: "QColor"; isReadonly: true }
+ Property { name: "listLowColor"; type: "QColor"; isReadonly: true }
+ Property { name: "listMediumColor"; type: "QColor"; isReadonly: true }
Signal { name: "paletteChanged" }
Method {
name: "color"
@@ -59,4 +109,32 @@ Module {
Parameter { name: "color"; type: "Color" }
}
}
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Universal.impl/CheckIndicator 2.0"
+ exports: ["QtQuick.Controls.Universal.impl/CheckIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ Property { name: "partiallyChecked"; type: "bool"; isReadonly: true }
+ }
+ Component {
+ prototype: "QQuickRectangle"
+ name: "QtQuick.Controls.Universal.impl/RadioIndicator 2.0"
+ exports: ["QtQuick.Controls.Universal.impl/RadioIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QVariant" }
+ }
+ Component {
+ prototype: "QQuickItem"
+ name: "QtQuick.Controls.Universal.impl/SwitchIndicator 2.0"
+ exports: ["QtQuick.Controls.Universal.impl/SwitchIndicator 2.0"]
+ exportMetaObjectRevisions: [0]
+ isComposite: true
+ defaultProperty: "data"
+ Property { name: "control"; type: "QQuickItem"; isPointer: true }
+ }
}
diff --git a/src/imports/controls/universal/universal.pri b/src/imports/controls/universal/universal.pri
index 33d0dcb0..4440acbf 100644
--- a/src/imports/controls/universal/universal.pri
+++ b/src/imports/controls/universal/universal.pri
@@ -34,6 +34,7 @@ QML_FILES += \
$$PWD/ScrollIndicator.qml \
$$PWD/Slider.qml \
$$PWD/SpinBox.qml \
+ $$PWD/SplitView.qml \
$$PWD/StackView.qml \
$$PWD/SwipeDelegate.qml \
$$PWD/SwitchDelegate.qml \
diff --git a/src/imports/controls/universal/universal.pro b/src/imports/controls/universal/universal.pro
index 399de032..99bad4da 100644
--- a/src/imports/controls/universal/universal.pro
+++ b/src/imports/controls/universal/universal.pro
@@ -1,6 +1,8 @@
TARGET = qtquickcontrols2universalstyleplugin
TARGETPATH = QtQuick/Controls.2/Universal
-IMPORT_VERSION = 2.5
+
+IMPORT_NAME = QtQuick.Controls.Universal
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/platform/doc/qtlabsplatform.qdocconf b/src/imports/platform/doc/qtlabsplatform.qdocconf
index c4a217ab..ae1a63f1 100644
--- a/src/imports/platform/doc/qtlabsplatform.qdocconf
+++ b/src/imports/platform/doc/qtlabsplatform.qdocconf
@@ -1,4 +1,5 @@
include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf)
project = QtLabsPlatform
description = Qt Labs Platform Reference Documentation
diff --git a/src/imports/platform/doc/src/qtlabsplatform-index.qdoc b/src/imports/platform/doc/src/qtlabsplatform-index.qdoc
index b5fd3046..7b3f78fb 100644
--- a/src/imports/platform/doc/src/qtlabsplatform-index.qdoc
+++ b/src/imports/platform/doc/src/qtlabsplatform-index.qdoc
@@ -45,6 +45,6 @@
\list
\li \l{Qt Quick}
- \li \l{Qt Quick Controls 2}
+ \li \l{Qt Quick Controls}
\endlist
*/
diff --git a/src/imports/platform/doc/src/qtlabsplatform-qmltypes.qdoc b/src/imports/platform/doc/src/qtlabsplatform-qmltypes.qdoc
index 57f011ef..dec67b72 100644
--- a/src/imports/platform/doc/src/qtlabsplatform-qmltypes.qdoc
+++ b/src/imports/platform/doc/src/qtlabsplatform-qmltypes.qdoc
@@ -33,7 +33,7 @@
The experimental \l{Qt Labs Platform} module provides QML types for native
platform extensions. These QML types work in conjunction with \l{Qt Quick}
- and \l{Qt Quick Controls 2}.
+ and \l{Qt Quick Controls}.
The QML types can be imported into your application using the
following import statement in your .qml file:
@@ -51,7 +51,7 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 QML Types}
+ \li \l {Qt Quick Controls QML Types}
\endlist
\noautolist
diff --git a/src/imports/platform/plugins.qmltypes b/src/imports/platform/plugins.qmltypes
index 6913405b..7b165ef3 100644
--- a/src/imports/platform/plugins.qmltypes
+++ b/src/imports/platform/plugins.qmltypes
@@ -7,7 +7,7 @@ import QtQuick.tooling 1.2
// 'qmlplugindump -nonrelocatable Qt.labs.platform 1.0'
Module {
- dependencies: ["QtQuick 2.8"]
+ dependencies: ["QtQuick 2.0"]
Component {
name: "QPlatformDialogHelper"
prototype: "QObject"
@@ -63,6 +63,18 @@ Module {
"EOL": -1
}
}
+ Enum {
+ name: "ButtonLayout"
+ values: {
+ "UnknownLayout": -1,
+ "WinLayout": 0,
+ "MacLayout": 1,
+ "KdeLayout": 2,
+ "GnomeLayout": 3,
+ "MacModelessLayout": 4,
+ "AndroidLayout": 5
+ }
+ }
Signal { name: "accept" }
Signal { name: "reject" }
}
@@ -182,6 +194,12 @@ Module {
Property { name: "options"; type: "QFontDialogOptions::FontDialogOptions" }
}
Component {
+ name: "QQuickPlatformIcon"
+ Property { name: "source"; type: "QUrl" }
+ Property { name: "name"; type: "string" }
+ Property { name: "mask"; type: "bool" }
+ }
+ Component {
name: "QQuickPlatformMenu"
defaultProperty: "data"
prototype: "QObject"
@@ -206,8 +224,10 @@ Module {
Property { name: "iconSource"; type: "QUrl" }
Property { name: "iconName"; type: "string" }
Property { name: "font"; type: "QFont" }
+ Property { name: "icon"; revision: 1; type: "QQuickPlatformIcon" }
Signal { name: "aboutToShow" }
Signal { name: "aboutToHide" }
+ Signal { name: "iconChanged"; revision: 1 }
Method {
name: "open"
Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true }
@@ -284,8 +304,10 @@ Module {
Property { name: "iconName"; type: "string" }
Property { name: "shortcut"; type: "QVariant" }
Property { name: "font"; type: "QFont" }
+ Property { name: "icon"; revision: 1; type: "QQuickPlatformIcon" }
Signal { name: "triggered" }
Signal { name: "hovered" }
+ Signal { name: "iconChanged"; revision: 1 }
Method { name: "toggle" }
}
Component {
@@ -422,8 +444,11 @@ Module {
Component {
name: "QQuickPlatformSystemTrayIcon"
prototype: "QObject"
- exports: ["Qt.labs.platform/SystemTrayIcon 1.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "Qt.labs.platform/SystemTrayIcon 1.0",
+ "Qt.labs.platform/SystemTrayIcon 1.1"
+ ]
+ exportMetaObjectRevisions: [0, 1]
Property { name: "available"; type: "bool"; isReadonly: true }
Property { name: "supportsMessages"; type: "bool"; isReadonly: true }
Property { name: "visible"; type: "bool" }
@@ -431,11 +456,15 @@ Module {
Property { name: "iconName"; type: "string" }
Property { name: "tooltip"; type: "string" }
Property { name: "menu"; type: "QQuickPlatformMenu"; isPointer: true }
+ Property { name: "geometry"; revision: 1; type: "QRect"; isReadonly: true }
+ Property { name: "icon"; revision: 1; type: "QQuickPlatformIcon" }
Signal {
name: "activated"
Parameter { name: "reason"; type: "QPlatformSystemTrayIcon::ActivationReason" }
}
Signal { name: "messageClicked" }
+ Signal { name: "geometryChanged"; revision: 1 }
+ Signal { name: "iconChanged"; revision: 1 }
Method { name: "show" }
Method { name: "hide" }
Method {
diff --git a/src/imports/templates/doc/src/qtquicktemplates2-index.qdoc b/src/imports/templates/doc/src/qtquicktemplates2-index.qdoc
index d017a338..492785a4 100644
--- a/src/imports/templates/doc/src/qtquicktemplates2-index.qdoc
+++ b/src/imports/templates/doc/src/qtquicktemplates2-index.qdoc
@@ -30,7 +30,7 @@
\title Qt Quick Templates 2
\brief A set of templates to create user interface controls in Qt Quick
- Qt Quick Templates are the foundations of \l {Qt Quick Controls 2}. Templates
+ Qt Quick Templates are the foundations of \l {Qt Quick Controls}. Templates
are non-visual implementations of controls' logic and behavior. They offer
an interface to visualize the controls in QML using \l {Qt Quick}.
@@ -48,7 +48,7 @@
\list
\li \l{Qt Quick}
- \li \l{Qt Quick Controls 2}
+ \li \l{Qt Quick Controls}
\li \l{Qt Quick Templates 2 QML Types}
\endlist
*/
diff --git a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
index 33ee08d3..1288e937 100644
--- a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
+++ b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
@@ -56,7 +56,7 @@
\section1 Related Information
\list
- \li \l {Qt Quick Controls 2 QML Types}
+ \li \l {Qt Quick Controls QML Types}
\endlist
\noautolist
diff --git a/src/imports/templates/plugins.qmltypes b/src/imports/templates/plugins.qmltypes
index e9404fea..48e23edd 100644
--- a/src/imports/templates/plugins.qmltypes
+++ b/src/imports/templates/plugins.qmltypes
@@ -4,7 +4,7 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Templates 2.5'
+// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Templates 2.13'
Module {
dependencies: ["QtQuick 2.9", "QtQuick.Window 2.2"]
@@ -640,6 +640,7 @@ Module {
Property { name: "width"; type: "int" }
Property { name: "height"; type: "int" }
Property { name: "color"; type: "QColor" }
+ Property { name: "cache"; type: "bool" }
}
Component {
name: "QQuickItemDelegate"
@@ -1064,7 +1065,6 @@ Module {
prototype: "QObject"
Property { name: "centerIn"; type: "QQuickItem"; isPointer: true }
}
- Component { name: "QQuickPopupItem"; defaultProperty: "contentData"; prototype: "QQuickPage" }
Component {
name: "QQuickProgressBar"
defaultProperty: "data"
@@ -1369,6 +1369,45 @@ Module {
Signal { name: "implicitIndicatorHeightChanged"; revision: 5 }
}
Component {
+ name: "QQuickSplitHandleAttached"
+ prototype: "QObject"
+ exports: ["QtQuick.Templates/SplitHandle 2.13"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Property { name: "hovered"; type: "bool"; isReadonly: true }
+ Property { name: "pressed"; type: "bool"; isReadonly: true }
+ }
+ Component {
+ name: "QQuickSplitView"
+ defaultProperty: "contentData"
+ prototype: "QQuickContainer"
+ exports: ["QtQuick.Templates/SplitView 2.13"]
+ exportMetaObjectRevisions: [0]
+ attachedType: "QQuickSplitViewAttached"
+ Property { name: "orientation"; type: "Qt::Orientation" }
+ Property { name: "resizing"; type: "bool"; isReadonly: true }
+ Property { name: "handle"; type: "QQmlComponent"; isPointer: true }
+ Method { name: "saveState"; type: "QVariant" }
+ Method {
+ name: "restoreState"
+ type: "bool"
+ Parameter { name: "state"; type: "QVariant" }
+ }
+ }
+ Component {
+ name: "QQuickSplitViewAttached"
+ prototype: "QObject"
+ Property { name: "view"; type: "QQuickSplitView"; isReadonly: true; isPointer: true }
+ Property { name: "minimumWidth"; type: "double" }
+ Property { name: "minimumHeight"; type: "double" }
+ Property { name: "preferredWidth"; type: "double" }
+ Property { name: "preferredHeight"; type: "double" }
+ Property { name: "maximumWidth"; type: "double" }
+ Property { name: "maximumHeight"; type: "double" }
+ Property { name: "fillHeight"; type: "bool" }
+ Property { name: "fillWidth"; type: "bool" }
+ }
+ Component {
name: "QQuickStackView"
defaultProperty: "data"
prototype: "QQuickControl"
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index c4ff68fc..10f9b8dd 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -82,6 +82,7 @@
#include <QtQuickTemplates2/private/qquickshortcutcontext_p_p.h>
#include <QtQuickTemplates2/private/qquickslider_p.h>
#include <QtQuickTemplates2/private/qquickspinbox_p.h>
+#include <QtQuickTemplates2/private/qquicksplitview_p.h>
#include <QtQuickTemplates2/private/qquickstackview_p.h>
#include <QtQuickTemplates2/private/qquickswipe_p.h>
#include <QtQuickTemplates2/private/qquickswipedelegate_p.h>
@@ -347,6 +348,13 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
qmlRegisterType<QQuickTextArea, 5>(uri, 2, 5, "TextArea");
qmlRegisterType<QQuickTextField, 5>(uri, 2, 5, "TextField");
qmlRegisterType<QQuickToolTip, 5>(uri, 2, 5, "ToolTip");
+
+ // QtQuick.Templates 2.13 (new types and revisions in Qt 5.13)
+ qmlRegisterType<QQuickSplitView>(uri, 2, 13, "SplitView");
+ qmlRegisterType<QQuickSplitViewAttached>();
+ qmlRegisterUncreatableType<QQuickSplitHandleAttached>(uri, 2, 13, "SplitHandle",
+ QStringLiteral("SplitHandle is only available as an attached property."));
+ qmlRegisterType<QQuickSplitHandleAttached>();
}
QT_END_NAMESPACE
diff --git a/src/imports/templates/templates.pro b/src/imports/templates/templates.pro
index b132f47d..3447ef90 100644
--- a/src/imports/templates/templates.pro
+++ b/src/imports/templates/templates.pro
@@ -1,6 +1,6 @@
TARGET = qtquicktemplates2plugin
TARGETPATH = QtQuick/Templates.2
-IMPORT_VERSION = 2.5
+IMPORT_VERSION = 2.$$QT_MINOR_VERSION
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private
diff --git a/src/quickcontrols2/qquickiconlabel.cpp b/src/quickcontrols2/qquickiconlabel.cpp
index 37e6060a..b246621b 100644
--- a/src/quickcontrols2/qquickiconlabel.cpp
+++ b/src/quickcontrols2/qquickiconlabel.cpp
@@ -81,6 +81,7 @@ bool QQuickIconLabelPrivate::createImage()
image->setSource(icon.source());
image->setSourceSize(QSize(icon.width(), icon.height()));
image->setColor(icon.color());
+ image->setCache(icon.cache());
QQmlEngine::setContextForObject(image, qmlContext(q));
if (componentComplete)
completeComponent(image);
@@ -114,6 +115,7 @@ void QQuickIconLabelPrivate::syncImage()
image->setSource(icon.source());
image->setSourceSize(QSize(icon.width(), icon.height()));
image->setColor(icon.color());
+ image->setCache(icon.cache());
const int valign = alignment & Qt::AlignVertical_Mask;
image->setVerticalAlignment(static_cast<QQuickImage::VAlignment>(valign));
const int halign = alignment & Qt::AlignHorizontal_Mask;
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp
index b4901db3..e2b6678b 100644
--- a/src/quickcontrols2/qquickstyle.cpp
+++ b/src/quickcontrols2/qquickstyle.cpp
@@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE
\since 5.7
QQuickStyle provides API for querying and configuring the application
- \l {Styling Qt Quick Controls 2}{styles} of Qt Quick Controls 2.
+ \l {Styling Qt Quick Controls}{styles} of Qt Quick Controls.
\code
#include <QGuiApplication>
@@ -86,7 +86,7 @@ QT_BEGIN_NAMESPACE
\endcode
\note The style must be configured \b before loading QML that imports
- Qt Quick Controls 2. It is not possible to change the style after the QML
+ Qt Quick Controls. It is not possible to change the style after the QML
types have been registered.
The style can also be specified as a path to a custom style, such as
@@ -102,7 +102,7 @@ QT_BEGIN_NAMESPACE
QQuickStyle::setFallbackStyle("Material");
\endcode
- \sa {Styling Qt Quick Controls 2}
+ \sa {Styling Qt Quick Controls}
*/
static QStringList envPathList(const QByteArray &var)
@@ -536,10 +536,10 @@ QString QQuickStyle::path()
/*!
Sets the application style to \a style.
- \note The style must be configured \b before loading QML that imports Qt Quick Controls 2.
+ \note The style must be configured \b before loading QML that imports Qt Quick Controls.
It is not possible to change the style after the QML types have been registered.
- \sa setFallbackStyle(), {Using Styles in Qt Quick Controls 2}
+ \sa setFallbackStyle(), {Using Styles in Qt Quick Controls}
*/
void QQuickStyle::setStyle(const QString &style)
{
@@ -555,15 +555,15 @@ void QQuickStyle::setStyle(const QString &style)
\since 5.8
Sets the application fallback style to \a style.
- \note The fallback style must be the name of one of the built-in Qt Quick Controls 2 styles, e.g. "Material".
+ \note The fallback style must be the name of one of the built-in Qt Quick Controls styles, e.g. "Material".
- \note The style must be configured \b before loading QML that imports Qt Quick Controls 2.
+ \note The style must be configured \b before loading QML that imports Qt Quick Controls.
It is not possible to change the style after the QML types have been registered.
The fallback style can be also specified by setting the \c QT_QUICK_CONTROLS_FALLBACK_STYLE
- \l {Supported Environment Variables in Qt Quick Controls 2}{environment variable}.
+ \l {Supported Environment Variables in Qt Quick Controls}{environment variable}.
- \sa setStyle(), {Using Styles in Qt Quick Controls 2}
+ \sa setStyle(), {Using Styles in Qt Quick Controls}
*/
void QQuickStyle::setFallbackStyle(const QString &style)
{
diff --git a/src/quickcontrols2/qquicktumblerview.cpp b/src/quickcontrols2/qquicktumblerview.cpp
index a510a1fe..5f5c065d 100644
--- a/src/quickcontrols2/qquicktumblerview.cpp
+++ b/src/quickcontrols2/qquicktumblerview.cpp
@@ -36,6 +36,7 @@
#include "qquicktumblerview_p.h"
+#include <QtCore/qloggingcategory.h>
#include <QtQuick/private/qquickitem_p.h>
#include <QtQuick/private/qquicklistview_p.h>
#include <QtQuick/private/qquickpathview_p.h>
@@ -45,6 +46,8 @@
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcTumblerView, "qt.quick.controls.tumblerview")
+
QQuickTumblerView::QQuickTumblerView(QQuickItem *parent) :
QQuickItem(parent)
{
@@ -59,6 +62,8 @@ QVariant QQuickTumblerView::model() const
void QQuickTumblerView::setModel(const QVariant &model)
{
+ qCDebug(lcTumblerView) << "setting model to:" << model << "on"
+ << (m_pathView ? static_cast<QObject*>(m_pathView) : static_cast<QObject*>(m_listView));
if (model == m_model)
return;
@@ -85,6 +90,8 @@ QQmlComponent *QQuickTumblerView::delegate() const
void QQuickTumblerView::setDelegate(QQmlComponent *delegate)
{
+ qCDebug(lcTumblerView) << "setting delegate to:" << delegate << "on"
+ << (m_pathView ? static_cast<QObject*>(m_pathView) : static_cast<QObject*>(m_listView));
if (delegate == m_delegate)
return;
@@ -135,6 +142,8 @@ void QQuickTumblerView::createView()
}
if (!m_pathView) {
+ qCDebug(lcTumblerView) << "creating PathView";
+
m_pathView = new QQuickPathView;
QQmlEngine::setContextForObject(m_pathView, qmlContext(this));
QQml_setParent_noEvent(m_pathView, this);
@@ -150,6 +159,8 @@ void QQuickTumblerView::createView()
updateView();
// Set the model.
updateModel();
+
+ qCDebug(lcTumblerView) << "finished creating PathView";
}
} else {
if (m_pathView) {
@@ -162,6 +173,8 @@ void QQuickTumblerView::createView()
}
if (!m_listView) {
+ qCDebug(lcTumblerView) << "creating ListView";
+
m_listView = new QQuickListView;
QQmlEngine::setContextForObject(m_listView, qmlContext(this));
QQml_setParent_noEvent(m_listView, this);
@@ -181,6 +194,8 @@ void QQuickTumblerView::createView()
// which we don't want when the contentItem has just been created.
m_listView->setDelegate(m_delegate);
m_listView->setHighlightMoveDuration(1000);
+
+ qCDebug(lcTumblerView) << "finished creating ListView";
}
}
}
diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp
index 0aa8ec28..983f2651 100644
--- a/src/quicktemplates2/qquickabstractbutton.cpp
+++ b/src/quicktemplates2/qquickabstractbutton.cpp
@@ -736,7 +736,7 @@ void QQuickAbstractButton::setIndicator(QQuickItem *indicator)
\include qquickicon.qdocinc grouped-properties
- \sa text, display, {Icons in Qt Quick Controls 2}
+ \sa text, display, {Icons in Qt Quick Controls}
*/
QQuickIcon QQuickAbstractButton::icon() const
diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp
index acd98470..0d05bee7 100644
--- a/src/quicktemplates2/qquickapplicationwindow.cpp
+++ b/src/quicktemplates2/qquickapplicationwindow.cpp
@@ -113,7 +113,7 @@ QT_BEGIN_NAMESPACE
attached properties works in any window regardless of its \c id.
\sa {Customizing ApplicationWindow}, Overlay, Page, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
static const QQuickItemPrivate::ChangeTypes ItemChanges = QQuickItemPrivate::Visibility
diff --git a/src/quicktemplates2/qquickbutton.cpp b/src/quicktemplates2/qquickbutton.cpp
index fbce5225..b4188a95 100644
--- a/src/quicktemplates2/qquickbutton.cpp
+++ b/src/quicktemplates2/qquickbutton.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
\e Yes, \e No, and \e Help.
Button inherits its API from AbstractButton. For instance, you can set
- \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls 2}{icon},
+ \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon},
and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API.
A button emits the signal \l {AbstractButton::}{clicked()} when it is activated by the user.
diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp
index 78ec7ef8..dd0bb905 100644
--- a/src/quicktemplates2/qquickcombobox.cpp
+++ b/src/quicktemplates2/qquickcombobox.cpp
@@ -134,7 +134,7 @@ QT_BEGIN_NAMESPACE
\l textRole is not defined, ComboBox is unable to visualize it and throws a
\c {ReferenceError: modelData is not defined}.
- \sa {Customizing ComboBox}, {Input Controls}, {Focus Management in Qt Quick Controls 2}
+ \sa {Customizing ComboBox}, {Input Controls}, {Focus Management in Qt Quick Controls}
*/
/*!
@@ -828,6 +828,7 @@ void QQuickComboBox::setModel(const QVariant& m)
d->model = model;
d->createDelegateModel();
+ emit countChanged();
if (isComponentComplete()) {
setCurrentIndex(count() > 0 ? 0 : -1);
d->updateCurrentText();
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index dd954b2b..e156fb57 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -1470,9 +1470,9 @@ void QQuickControl::setHovered(bool hovered)
Setting this property propagates the value to all child controls that do not have
\c hoverEnabled explicitly set.
- You can also enable or disable hover effects for all Qt Quick Controls 2 applications
+ You can also enable or disable hover effects for all Qt Quick Controls applications
by setting the \c QT_QUICK_CONTROLS_HOVER_ENABLED \l {Supported Environment Variables
- in Qt Quick Controls 2}{environment variable}.
+ in Qt Quick Controls}{environment variable}.
\sa hovered
*/
diff --git a/src/quicktemplates2/qquickicon.cpp b/src/quicktemplates2/qquickicon.cpp
index 1b8f4797..5a689108 100644
--- a/src/quicktemplates2/qquickicon.cpp
+++ b/src/quicktemplates2/qquickicon.cpp
@@ -46,6 +46,7 @@ public:
int width = 0;
int height = 0;
QColor color = Qt::transparent;
+ bool cache = true;
enum ResolveProperties {
NameResolved = 0x0001,
@@ -53,6 +54,7 @@ public:
WidthResolved = 0x0004,
HeightResolved = 0x0008,
ColorResolved = 0x0010,
+ CacheResolved = 0x0020,
AllPropertiesResolved = 0x1ffff
};
@@ -86,7 +88,8 @@ bool QQuickIcon::operator==(const QQuickIcon &other) const
&& d->source == other.d->source
&& d->width == other.d->width
&& d->height == other.d->height
- && d->color == other.d->color);
+ && d->color == other.d->color
+ && d->cache == other.d->cache);
}
bool QQuickIcon::operator!=(const QQuickIcon &other) const
@@ -199,6 +202,26 @@ void QQuickIcon::resetColor()
d->resolveMask &= ~QQuickIconPrivate::ColorResolved;
}
+bool QQuickIcon::cache() const
+{
+ return d->cache;
+}
+
+void QQuickIcon::setCache(bool cache)
+{
+ if ((d->resolveMask & QQuickIconPrivate::CacheResolved) && d->cache == cache)
+ return;
+
+ d->cache = cache;
+ d->resolveMask |= QQuickIconPrivate::CacheResolved;
+}
+
+void QQuickIcon::resetCache()
+{
+ d->cache = true;
+ d->resolveMask &= ~QQuickIconPrivate::CacheResolved;
+}
+
QQuickIcon QQuickIcon::resolve(const QQuickIcon &other) const
{
QQuickIcon resolved = *this;
@@ -218,6 +241,9 @@ QQuickIcon QQuickIcon::resolve(const QQuickIcon &other) const
if (!(d->resolveMask & QQuickIconPrivate::ColorResolved))
resolved.setColor(other.color());
+ if (!(d->resolveMask & QQuickIconPrivate::CacheResolved))
+ resolved.setCache(other.cache());
+
return resolved;
}
diff --git a/src/quicktemplates2/qquickicon_p.h b/src/quicktemplates2/qquickicon_p.h
index 2c95bc9d..57cab720 100644
--- a/src/quicktemplates2/qquickicon_p.h
+++ b/src/quicktemplates2/qquickicon_p.h
@@ -67,6 +67,7 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickIcon
Q_PROPERTY(int width READ width WRITE setWidth RESET resetWidth FINAL)
Q_PROPERTY(int height READ height WRITE setHeight RESET resetHeight FINAL)
Q_PROPERTY(QColor color READ color WRITE setColor RESET resetColor FINAL)
+ Q_PROPERTY(bool cache READ cache WRITE setCache RESET resetCache FINAL)
public:
QQuickIcon();
@@ -99,6 +100,10 @@ public:
void setColor(const QColor &color);
void resetColor();
+ bool cache() const;
+ void setCache(bool cache);
+ void resetCache();
+
QQuickIcon resolve(const QQuickIcon &other) const;
private:
diff --git a/src/quicktemplates2/qquickitemdelegate.cpp b/src/quicktemplates2/qquickitemdelegate.cpp
index ac409118..8156ab65 100644
--- a/src/quicktemplates2/qquickitemdelegate.cpp
+++ b/src/quicktemplates2/qquickitemdelegate.cpp
@@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE
in various views and controls, such as \l ListView and \l ComboBox.
ItemDelegate inherits its API from AbstractButton. For instance, you can set
- \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls 2}{icon},
+ \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon},
and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API.
\snippet qtquickcontrols2-itemdelegate.qml 1
diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp
index 6016e70d..1761d999 100644
--- a/src/quicktemplates2/qquickmenubar.cpp
+++ b/src/quicktemplates2/qquickmenubar.cpp
@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE
menus in a menu bar can be accessed using \l menuAt().
\sa {Customizing MenuBar}, Menu, MenuBarItem, {Menu Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
QQuickItem *QQuickMenuBarPrivate::beginCreateItem()
diff --git a/src/quicktemplates2/qquickmenuitem.cpp b/src/quicktemplates2/qquickmenuitem.cpp
index 22fe664a..a7fc63e8 100644
--- a/src/quicktemplates2/qquickmenuitem.cpp
+++ b/src/quicktemplates2/qquickmenuitem.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
example.
MenuItem inherits its API from AbstractButton. For instance, you can set
- \l {AbstractButton::text}{text} and \l {Icons in Qt Quick Controls 2}{icon}
+ \l {AbstractButton::text}{text} and \l {Icons in Qt Quick Controls}{icon}
using the AbstractButton API.
\code
diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp
index cb90ac48..78bae921 100644
--- a/src/quicktemplates2/qquickpage.cpp
+++ b/src/quicktemplates2/qquickpage.cpp
@@ -83,7 +83,7 @@ QT_BEGIN_NAMESPACE
\endqml
\sa ApplicationWindow, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
static const QQuickItemPrivate::ChangeTypes LayoutChanges = QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | QQuickItemPrivate::Destroyed
diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp
index fd9d2cf0..18c8bd51 100644
--- a/src/quicktemplates2/qquickpane.cpp
+++ b/src/quicktemplates2/qquickpane.cpp
@@ -120,7 +120,7 @@ QT_BEGIN_NAMESPACE
\endcode
\sa {Customizing Pane}, {Container Controls},
- {Focus Management in Qt Quick Controls 2}, {Event Handling}
+ {Focus Management in Qt Quick Controls}, {Event Handling}
*/
void QQuickPanePrivate::init()
diff --git a/src/quicktemplates2/qquickrangeslider.cpp b/src/quicktemplates2/qquickrangeslider.cpp
index acf4dca3..378ece50 100644
--- a/src/quicktemplates2/qquickrangeslider.cpp
+++ b/src/quicktemplates2/qquickrangeslider.cpp
@@ -89,7 +89,7 @@ QT_BEGIN_NAMESPACE
For a slider that allows the user to select a single value, see \l Slider.
\sa {Customizing RangeSlider}, {Input Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
class QQuickRangeSliderNodePrivate : public QObjectPrivate
diff --git a/src/quicktemplates2/qquickscrollview.cpp b/src/quicktemplates2/qquickscrollview.cpp
index 98bd174e..70390351 100644
--- a/src/quicktemplates2/qquickscrollview.cpp
+++ b/src/quicktemplates2/qquickscrollview.cpp
@@ -113,7 +113,7 @@ QT_BEGIN_NAMESPACE
\snippet qtquickcontrols2-scrollview-interactive.qml file
\sa ScrollBar, ScrollIndicator, {Customizing ScrollView}, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
class QQuickScrollViewPrivate : public QQuickPanePrivate
diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp
index 274929b0..389e5c54 100644
--- a/src/quicktemplates2/qquickspinbox.cpp
+++ b/src/quicktemplates2/qquickspinbox.cpp
@@ -92,7 +92,7 @@ static const int AUTO_REPEAT_INTERVAL = 100;
\snippet qtquickcontrols2-spinbox-double.qml 1
- \sa Tumbler, {Customizing SpinBox}, {Focus Management in Qt Quick Controls 2}
+ \sa Tumbler, {Customizing SpinBox}, {Focus Management in Qt Quick Controls}
*/
/*!
diff --git a/src/quicktemplates2/qquicksplitview.cpp b/src/quicktemplates2/qquicksplitview.cpp
new file mode 100644
index 00000000..75cd9674
--- /dev/null
+++ b/src/quicktemplates2/qquicksplitview.cpp
@@ -0,0 +1,2049 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qquicksplitview_p.h"
+#include "qquicksplitview_p_p.h"
+#include "qquickcontentitem_p.h"
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qloggingcategory.h>
+#include <QtCore/qcborarray.h>
+#include <QtCore/qcbormap.h>
+#include <QtCore/qcborvalue.h>
+#include <QtQml/QQmlInfo>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \qmltype SplitView
+ \inherits Control
+ \instantiates QQuickSplitView
+ \inqmlmodule QtQuick.Controls
+ \since 5.13
+ \ingroup qtquickcontrols2-containers
+ \ingroup qtquickcontrols2-focusscopes
+ \brief Lays out items with a draggable splitter between each item
+
+ SplitView is a control that lays out items horizontally or vertically with
+ a draggable splitter between each item.
+
+ SplitView supports the following attached properties on items it manages:
+
+ \list
+ \li \l SplitView.minimumWidth
+ \li \l SplitView.minimumHeight
+ \li \l SplitView.preferredWidth
+ \li \l SplitView.preferredHeight
+ \li \l SplitView.maximumWidth
+ \li \l SplitView.maximumHeight
+ \li \l SplitView.fillWidth (true for only one child)
+ \li \l SplitView.fillHeight (true for only one child)
+ \endlist
+
+ In addition, each handle has the following read-only attached properties:
+
+ \list
+ \li \l SplitHandle.hovered
+ \li \l SplitHandle.pressed
+ \endlist
+
+ The preferred size of items in a SplitView can be specified via
+ \l {Item::}{implicitWidth} and \l {Item::}{implicitHeight} or
+ \c SplitView.preferredWidth and \c SplitView.preferredHeight:
+
+ \code
+ SplitView {
+ anchors.fill: parent
+
+ Item {
+ SplitView.preferredWidth: 50
+ }
+
+ // ...
+ }
+ \endcode
+
+ For a horizontal SplitView, it's not necessary to specify the preferred
+ height of each item, as they will be resized to the height of the view.
+ This applies in reverse for vertical views.
+
+ When a split handle is dragged, the \c SplitView.preferredWidth or
+ \c SplitView.preferredHeight property is overwritten, depending on the
+ \l orientation of the view.
+
+ To limit the size of items in a horizontal view, use the following
+ properties:
+
+ \code
+ SplitView {
+ anchors.fill: parent
+
+ Item {
+ SplitView.minimumWidth: 25
+ SplitView.preferredWidth: 50
+ SplitView.maximumWidth: 100
+ }
+
+ // ...
+ }
+ \endcode
+
+ To limit the size of items in a vertical view, use the following
+ properties:
+
+ \code
+ SplitView {
+ anchors.fill: parent
+ orientation: Qt.Vertical
+
+ Item {
+ SplitView.minimumHeight: 25
+ SplitView.preferredHeight: 50
+ SplitView.maximumHeight: 100
+ }
+
+ // ...
+ }
+ \endcode
+
+ There will always be one item (the fill item) in the SplitView that has
+ \c SplitView.fillWidth set to \c true (or \c SplitView.fillHeight, if
+ \l orientation is \c Qt.Vertical). This means that the item will get all
+ leftover space when other items have been laid out. By default, the last
+ visible child of the SplitView will have this set, but it can be changed by
+ explicitly setting \c fillWidth to \c true on another item.
+
+ A handle can belong to the item either on the left or top side, or on the
+ right or bottom side:
+
+ \list
+ \li If the fill item is to the right: the handle belongs to the left
+ item.
+ \li If the fill item is on the left: the handle belongs to the right
+ item.
+ \endlist
+
+ To create a SplitView with three items, and let the center item get
+ superfluous space, one could do the following:
+
+ \code
+ SplitView {
+ anchors.fill: parent
+ orientation: Qt.Horizontal
+
+ Rectangle {
+ implicitWidth: 200
+ SplitView.maximumWidth: 400
+ color: "lightblue"
+ Label {
+ text: "View 1"
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle {
+ id: centerItem
+ SplitView.minimumWidth: 50
+ SplitView.fillWidth: true
+ color: "lightgray"
+ Label {
+ text: "View 2"
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle {
+ implicitWidth: 200
+ color: "lightgreen"
+ Label {
+ text: "View 3"
+ anchors.centerIn: parent
+ }
+ }
+ }
+ \endcode
+
+ \section1 Serializing SplitView's State
+
+ The main purpose of SplitView is to allow users to easily configure the
+ size of various UI elements. In addition, the user's preferred sizes should
+ be remembered across sessions. To achieve this, the values of the \c
+ SplitView.preferredWidth and \c SplitView.preferredHeight properties can be
+ serialized using the \l saveState() and \l restoreState() functions:
+
+ \qml \QtMinorVersion
+ import QtQuick.Controls 2.\1
+ import Qt.labs.settings 1.0
+
+ ApplicationWindow {
+ // ...
+
+ Component.onCompleted: splitView.restoreState(settings.splitView)
+ Component.onDestruction: settings.splitView = splitView.saveState()
+
+ Settings {
+ id: settings
+ property var splitView
+ }
+
+ SplitView {
+ id: splitView
+ // ...
+ }
+ }
+ \endqml
+
+ Alternatively, the \l {Settings::}{value()} and \l {Settings::}{setValue()}
+ functions of \l Settings can be used:
+
+ \qml \QtMinorVersion
+ import QtQuick.Controls 2.\1
+ import Qt.labs.settings 1.0
+
+ ApplicationWindow {
+ // ...
+
+ Component.onCompleted: splitView.restoreState(settings.value("ui/splitview"))
+ Component.onDestruction: settings.setValue("ui/splitview", splitView.saveState())
+
+ Settings {
+ id: settings
+ }
+
+ SplitView {
+ id: splitView
+ // ...
+ }
+ }
+ \endqml
+
+ \sa SplitHandle, {Customizing SplitView}, {Container Controls}
+*/
+
+Q_LOGGING_CATEGORY(qlcQQuickSplitView, "qt.quick.controls.splitview")
+Q_LOGGING_CATEGORY(qlcQQuickSplitViewMouse, "qt.quick.controls.splitview.mouse")
+Q_LOGGING_CATEGORY(qlcQQuickSplitViewState, "qt.quick.controls.splitview.state")
+
+void QQuickSplitViewPrivate::updateFillIndex()
+{
+ const int count = contentModel->count();
+ const bool horizontal = isHorizontal();
+
+ qCDebug(qlcQQuickSplitView) << "looking for fillWidth/Height item amongst" << count << "items";
+
+ m_fillIndex = -1;
+ int i = 0;
+ int lastVisibleIndex = -1;
+ for (; i < count; ++i) {
+ QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i));
+ if (!item->isVisible())
+ continue;
+
+ lastVisibleIndex = i;
+
+ const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ if (!attached)
+ continue;
+
+ if ((horizontal && attached->fillWidth()) || (!horizontal && attached->fillHeight())) {
+ m_fillIndex = i;
+ qCDebug(qlcQQuickSplitView) << "found fillWidth/Height item at index" << m_fillIndex;
+ break;
+ }
+ }
+
+ if (m_fillIndex == -1) {
+ // If there was no item with fillWidth/fillHeight set, m_fillIndex will be -1,
+ // and we'll set it to the last visible item.
+ // If there was an item with fillWidth/fillHeight set, we were already done and this will be skipped.
+ m_fillIndex = lastVisibleIndex != -1 ? lastVisibleIndex : count - 1;
+ qCDebug(qlcQQuickSplitView) << "found no fillWidth/Height item; using last item at index" << m_fillIndex;
+ }
+}
+
+/*
+ Resizes split items according to their preferred size and any constraints.
+
+ If a split item is being resized due to a split handle being dragged,
+ it will be resized accordingly.
+
+ Items that aren't visible are skipped.
+*/
+void QQuickSplitViewPrivate::layoutResizeSplitItems(qreal &usedWidth, qreal &usedHeight, int &indexBeingResizedDueToDrag)
+{
+ const int count = contentModel->count();
+ const bool horizontal = isHorizontal();
+ for (int index = 0; index < count; ++index) {
+ QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(index));
+ if (!item->isVisible()) {
+ // The item is not visible, so skip it.
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": split item " << item
+ << " at index " << index << " is not visible; skipping it and its handles (if any)";
+ continue;
+ }
+
+ const QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item);
+ QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ const auto sizeData = effectiveSizeData(itemPrivate, attached);
+
+ const bool resizeLeftItem = m_fillIndex > m_pressedHandleIndex;
+ // True if any handle is pressed.
+ const bool isAHandlePressed = m_pressedHandleIndex != -1;
+ // True if this particular item is being resized as a result of a handle being dragged.
+ const bool isBeingResized = isAHandlePressed && ((resizeLeftItem && index == m_pressedHandleIndex)
+ || (!resizeLeftItem && index == m_pressedHandleIndex + 1));
+ if (isBeingResized) {
+ indexBeingResizedDueToDrag = index;
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": dragging handle for item";
+ }
+
+ const qreal size = horizontal ? width : height;
+ qreal requestedSize = 0;
+ if (isBeingResized) {
+ // Don't let the mouse go past either edge of the SplitView.
+ const qreal clampedMousePos = horizontal
+ ? qBound(qreal(0.0), m_mousePos.x(), width)
+ : qBound(qreal(0.0), m_mousePos.y(), height);
+
+ // We also need to ensure that the item's edge doesn't go too far
+ // out and hence give the item more space than is available.
+ const int firstIndex = resizeLeftItem ? m_pressedHandleIndex + 1 : 0;
+ const int lastIndex = resizeLeftItem ? contentModel->count() - 1 : m_pressedHandleIndex;
+ const qreal accumulated = accumulatedSize(firstIndex, lastIndex);
+
+ const qreal mousePosRelativeToLeftHandleEdge = horizontal
+ ? m_pressPos.x() - m_handlePosBeforePress.x()
+ : m_pressPos.y() - m_handlePosBeforePress.y();
+
+ const QQuickItem *pressedHandleItem = m_handleItems.at(m_pressedHandleIndex);
+ const qreal pressedHandleSize = horizontal ? pressedHandleItem->width() : pressedHandleItem->height();
+
+ if (resizeLeftItem) {
+ // The handle shouldn't cross other handles, so use the right edge of
+ // the first handle to the left as the left edge.
+ qreal leftEdge = 0;
+ if (m_pressedHandleIndex - 1 >= 0) {
+ const QQuickItem *leftHandle = m_handleItems.at(m_pressedHandleIndex - 1);
+ leftEdge = horizontal
+ ? leftHandle->x() + leftHandle->width()
+ : leftHandle->y() + leftHandle->height();
+ }
+
+ // The mouse can be clicked anywhere in the handle, and if we don't account for
+ // its position within the handle, the handle will jump when dragged.
+ const qreal pressedHandlePos = clampedMousePos - mousePosRelativeToLeftHandleEdge;
+
+ const qreal rightStop = size - accumulated - pressedHandleSize;
+ qreal leftStop = qMax(leftEdge, pressedHandlePos);
+ // qBound() doesn't care if min is greater than max, but we do.
+ if (leftStop > rightStop)
+ leftStop = rightStop;
+ const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop);
+ const qreal newItemSize = newHandlePos - leftEdge;
+
+ // Modify the preferredWidth, otherwise the original implicitWidth/preferredWidth
+ // will be used on the next layout (when it's no longer being resized).
+ if (!attached) {
+ // Force the attached object to be created since we rely on it.
+ attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, true));
+ }
+
+ /*
+ Users could conceivably respond to size changes in items by setting attached
+ SplitView properties:
+
+ onWidthChanged: if (width < 10) secondItem.SplitView.preferredWidth = 100
+
+ We handle this by doing another layout after the current layout if the
+ attached/implicit size properties are set during this layout. However, we also
+ need to set preferredWidth/Height here (for reasons mentioned in the comment above),
+ but we don't want this to count as a request for a delayed layout, so we guard against it.
+ */
+ m_ignoreNextLayoutRequest = true;
+
+ if (horizontal)
+ attached->setPreferredWidth(newItemSize);
+ else
+ attached->setPreferredHeight(newItemSize);
+
+ // We still need to use requestedWidth in the setWidth() call below,
+ // because sizeData has already been calculated and now contains an old
+ // effectivePreferredWidth value.
+ requestedSize = newItemSize;
+
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized (dragged) " << item
+ << " (clampedMousePos=" << clampedMousePos
+ << " pressedHandlePos=" << pressedHandlePos
+ << " accumulated=" << accumulated
+ << " leftEdge=" << leftEdge
+ << " leftStop=" << leftStop
+ << " rightStop=" << rightStop
+ << " newHandlePos=" << newHandlePos
+ << " newItemSize=" << newItemSize << ")";
+ } else { // Resizing the item on the right.
+ // The handle shouldn't cross other handles, so use the left edge of
+ // the first handle to the right as the right edge.
+ qreal rightEdge = size;
+ if (m_pressedHandleIndex + 1 < m_handleItems.size()) {
+ const QQuickItem *rightHandle = m_handleItems.at(m_pressedHandleIndex + 1);
+ rightEdge = horizontal ? rightHandle->x() : rightHandle->y();
+ }
+
+ // The mouse can be clicked anywhere in the handle, and if we don't account for
+ // its position within the handle, the handle will jump when dragged.
+ const qreal pressedHandlePos = clampedMousePos - mousePosRelativeToLeftHandleEdge;
+
+ const qreal leftStop = accumulated - pressedHandleSize;
+ qreal rightStop = qMin(rightEdge - pressedHandleSize, pressedHandlePos);
+ // qBound() doesn't care if min is greater than max, but we do.
+ if (rightStop < leftStop)
+ rightStop = leftStop;
+ const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop);
+ const qreal newItemSize = rightEdge - (newHandlePos + pressedHandleSize);
+
+ // Modify the preferredWidth, otherwise the original implicitWidth/preferredWidth
+ // will be used on the next layout (when it's no longer being resized).
+ if (!attached) {
+ // Force the attached object to be created since we rely on it.
+ attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, true));
+ }
+
+ m_ignoreNextLayoutRequest = true;
+
+ if (horizontal)
+ attached->setPreferredWidth(newItemSize);
+ else
+ attached->setPreferredHeight(newItemSize);
+
+ // We still need to use requestedSize in the setWidth()/setHeight() call below,
+ // because sizeData has already been calculated and now contains an old
+ // effectivePreferredWidth/Height value.
+ requestedSize = newItemSize;
+
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized (dragged) " << item
+ << " (clampedMousePos=" << clampedMousePos
+ << " pressedHandlePos=" << pressedHandlePos
+ << " accumulated=" << accumulated
+ << " leftEdge=" << rightEdge
+ << " leftStop=" << leftStop
+ << " rightStop=" << rightStop
+ << " newHandlePos=" << newHandlePos
+ << " newItemSize=" << newItemSize << ")";
+ }
+ } else if (index != m_fillIndex) {
+ // No handle is being dragged and we're not the fill item,
+ // so set our preferred size as we normally would.
+ requestedSize = horizontal
+ ? sizeData.effectivePreferredWidth : sizeData.effectivePreferredHeight;
+ }
+
+ if (index != m_fillIndex) {
+ if (horizontal) {
+ item->setWidth(qBound(
+ sizeData.effectiveMinimumWidth,
+ requestedSize,
+ sizeData.effectiveMaximumWidth));
+ item->setHeight(height);
+ } else {
+ item->setWidth(width);
+ item->setHeight(qBound(
+ sizeData.effectiveMinimumHeight,
+ requestedSize,
+ sizeData.effectiveMaximumHeight));
+ }
+
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized split item " << item
+ << " (effective"
+ << " minW=" << sizeData.effectiveMinimumWidth
+ << ", minH=" << sizeData.effectiveMinimumHeight
+ << ", prfW=" << sizeData.effectivePreferredWidth
+ << ", prfH=" << sizeData.effectivePreferredHeight
+ << ", maxW=" << sizeData.effectiveMaximumWidth
+ << ", maxH=" << sizeData.effectiveMaximumHeight << ")";
+
+ // Keep track of how much space has been used so far.
+ if (horizontal)
+ usedWidth += item->width();
+ else
+ usedHeight += item->height();
+ } else if (indexBeingResizedDueToDrag != m_fillIndex) {
+ // The fill item is resized afterwards, outside of the loop.
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": skipping fill item as we resize it last";
+ }
+
+ // Also account for the size of the handle for this item (if any).
+ // We do this for the fill item too, which is why it's outside of the check above.
+ if (index < count - 1 && m_handle) {
+ QQuickItem *handleItem = m_handleItems.at(index);
+ // The handle for an item that's not visible will usually already be skipped
+ // with the item visibility check higher up, but if the view looks like this
+ // [ visible ] | [ visible (fill) ] | [ hidden ]
+ // ^
+ // hidden
+ // and we're iterating over the second item (which is visible but has no handle),
+ // we need to add an extra check for it to avoid it still taking up space.
+ if (handleItem->isVisible()) {
+ if (horizontal) {
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index
+ << ": handle takes up " << handleItem->width() << " width";
+ usedWidth += handleItem->width();
+ } else {
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index
+ << ": handle takes up " << handleItem->height() << " height";
+ usedHeight += handleItem->height();
+ }
+ } else {
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": handle is not visible; skipping it";
+ }
+ }
+ }
+}
+
+/*
+ Resizes the fill item by giving it the remaining space
+ after all other items have been resized.
+
+ Items that aren't visible are skipped.
+*/
+void QQuickSplitViewPrivate::layoutResizeFillItem(QQuickItem *fillItem,
+ qreal &usedWidth, qreal &usedHeight, int indexBeingResizedDueToDrag)
+{
+ // Only bother resizing if it it's visible. Also, if it's being resized due to a drag,
+ // then we've already set its size in layoutResizeSplitItems(), so no need to do it here.
+ if (!fillItem->isVisible() || indexBeingResizedDueToDrag == m_fillIndex) {
+ qCDebug(qlcQQuickSplitView).nospace() << m_fillIndex << ": - fill item " << fillItem
+ << " is not visible or was already resized due to a drag;"
+ << " skipping it and its handles (if any)";
+ return;
+ }
+
+ const QQuickItemPrivate *fillItemPrivate = QQuickItemPrivate::get(fillItem);
+ const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(fillItem, false));
+ const auto fillSizeData = effectiveSizeData(fillItemPrivate, attached);
+ if (isHorizontal()) {
+ fillItem->setWidth(qBound(
+ fillSizeData.effectiveMinimumWidth,
+ width - usedWidth,
+ fillSizeData.effectiveMaximumWidth));
+ fillItem->setHeight(height);
+ } else {
+ fillItem->setWidth(width);
+ fillItem->setHeight(qBound(
+ fillSizeData.effectiveMinimumHeight,
+ height - usedHeight,
+ fillSizeData.effectiveMaximumHeight));
+ }
+
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << m_fillIndex
+ << ": resized split fill item " << fillItem << " (effective"
+ << " minW=" << fillSizeData.effectiveMinimumWidth
+ << ", minH=" << fillSizeData.effectiveMinimumHeight
+ << ", maxW=" << fillSizeData.effectiveMaximumWidth
+ << ", maxH=" << fillSizeData.effectiveMaximumHeight << ")";
+}
+
+/*
+ Positions items by laying them out in a row or column.
+
+ Items that aren't visible are skipped.
+*/
+void QQuickSplitViewPrivate::layoutPositionItems(const QQuickItem *fillItem)
+{
+ const bool horizontal = isHorizontal();
+ const int count = contentModel->count();
+ qreal usedWidth = 0;
+ qreal usedHeight = 0;
+
+ for (int i = 0; i < count; ++i) {
+ QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i));
+ if (!item->isVisible()) {
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": split item " << item
+ << " is not visible; skipping it and its handles (if any)";
+ continue;
+ }
+
+ // Position the item.
+ if (horizontal) {
+ item->setX(usedWidth);
+ item->setY(0);
+ } else {
+ item->setX(0);
+ item->setY(usedHeight);
+ }
+
+ // Keep track of how much space has been used so far.
+ if (horizontal)
+ usedWidth += item->width();
+ else
+ usedHeight += item->height();
+
+ if (Q_UNLIKELY(qlcQQuickSplitView().isDebugEnabled())) {
+ const QQuickItemPrivate *fillItemPrivate = QQuickItemPrivate::get(fillItem);
+ const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(fillItem, false));
+ const auto sizeData = effectiveSizeData(fillItemPrivate, attached);
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": positioned "
+ << (i == m_fillIndex ? "fill item " : "item ") << item << " (effective"
+ << " minW=" << sizeData.effectiveMinimumWidth
+ << ", minH=" << sizeData.effectiveMinimumHeight
+ << ", prfW=" << sizeData.effectivePreferredWidth
+ << ", prfH=" << sizeData.effectivePreferredHeight
+ << ", maxW=" << sizeData.effectiveMaximumWidth
+ << ", maxH=" << sizeData.effectiveMaximumHeight << ")";
+ }
+
+ // Position the handle for this item (if any).
+ if (i < count - 1 && m_handle) {
+ // Position the handle.
+ QQuickItem *handleItem = m_handleItems.at(i);
+ handleItem->setX(horizontal ? usedWidth : 0);
+ handleItem->setY(horizontal ? 0 : usedHeight);
+
+ if (horizontal)
+ usedWidth += handleItem->width();
+ else
+ usedHeight += handleItem->height();
+
+ qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": positioned handle " << handleItem;
+ }
+ }
+}
+
+void QQuickSplitViewPrivate::requestLayout()
+{
+ Q_Q(QQuickSplitView);
+ q->polish();
+}
+
+void QQuickSplitViewPrivate::layout()
+{
+ if (!componentComplete)
+ return;
+
+ if (m_layingOut)
+ return;
+
+ const int count = contentModel->count();
+ if (count <= 0)
+ return;
+
+ Q_ASSERT_X(m_fillIndex < count, Q_FUNC_INFO, qPrintable(
+ QString::fromLatin1("m_fillIndex is %1 but our count is %2").arg(m_fillIndex).arg(count)));
+
+ Q_ASSERT_X(!m_handle || m_handleItems.size() == count - 1, Q_FUNC_INFO, qPrintable(QString::fromLatin1(
+ "Expected %1 handle items, but there are %2").arg(count - 1).arg(m_handleItems.size())));
+
+ // We allow mouse events to instantly trigger layouts, whereas with e.g.
+ // attached properties being set, we require a delayed layout.
+ // To prevent recursive calls during mouse events, we need this guard.
+ QBoolBlocker guard(m_layingOut, true);
+
+ const bool horizontal = isHorizontal();
+ qCDebug(qlcQQuickSplitView) << "laying out" << count << "split items"
+ << (horizontal ? "horizontally" : "vertically") << "in SplitView" << q_func();
+
+ qreal usedWidth = 0;
+ qreal usedHeight = 0;
+ int indexBeingResizedDueToDrag = -1;
+
+ qCDebug(qlcQQuickSplitView) << " resizing:";
+
+ // First, resize the items. We need to do this first because otherwise fill
+ // items would take up all of the remaining space as soon as they are encountered.
+ layoutResizeSplitItems(usedWidth, usedHeight, indexBeingResizedDueToDrag);
+
+ qCDebug(qlcQQuickSplitView).nospace()
+ << " - (remaining width=" << width - usedWidth
+ << " remaining height=" << height - usedHeight << ")";
+
+ // Give the fill item the remaining space.
+ QQuickItem *fillItem = qobject_cast<QQuickItem*>(contentModel->object(m_fillIndex));
+ layoutResizeFillItem(fillItem, usedWidth, usedHeight, indexBeingResizedDueToDrag);
+
+ qCDebug(qlcQQuickSplitView) << " positioning:";
+
+ // Position the items.
+ layoutPositionItems(fillItem);
+
+ qCDebug(qlcQQuickSplitView).nospace() << "finished layouting";
+}
+
+void QQuickSplitViewPrivate::createHandles()
+{
+ Q_ASSERT(m_handle);
+ // A handle only makes sense if there are two items on either side.
+ if (contentModel->count() <= 1)
+ return;
+
+ // Create new handle items if there aren't enough.
+ const int count = contentModel->count() - 1;
+ qCDebug(qlcQQuickSplitView) << "creating" << count << "handles";
+ m_handleItems.reserve(count);
+ for (int i = 0; i < count; ++i)
+ createHandleItem(i);
+}
+
+void QQuickSplitViewPrivate::createHandleItem(int index)
+{
+ Q_Q(QQuickSplitView);
+ if (contentModel->count() <= 1)
+ return;
+
+ qCDebug(qlcQQuickSplitView) << "- creating handle for split item at index" << index
+ << "from handle component" << m_handle;
+
+ // If we don't use the correct context, it won't be possible to refer to
+ // the control's id from within the delegate.
+ QQmlContext *creationContext = m_handle->creationContext();
+ // The component might not have been created in QML, in which case
+ // the creation context will be null and we have to create it ourselves.
+ if (!creationContext)
+ creationContext = qmlContext(q);
+ QQmlContext *context = new QQmlContext(creationContext, q);
+ context->setContextObject(q);
+ QQuickItem *item = qobject_cast<QQuickItem*>(m_handle->beginCreate(context));
+ if (item) {
+ // Insert the item to our list of items *before* its parent is set to us,
+ // so that we can avoid it being added as a content item by checking
+ // if it is in the list in isContent().
+ m_handleItems.insert(index, item);
+
+ item->setParentItem(q);
+
+ m_handle->completeCreate();
+ resizeHandle(item);
+ }
+}
+
+void QQuickSplitViewPrivate::removeExcessHandles()
+{
+ int excess = m_handleItems.size() - qMax(0, contentModel->count() - 1);
+ for (; excess > 0; --excess) {
+ QQuickItem *handleItem = m_handleItems.takeLast();
+ delete handleItem;
+ }
+}
+
+qreal QQuickSplitViewPrivate::accumulatedSize(int firstIndex, int lastIndex) const
+{
+ qreal size = 0.0;
+ const bool horizontal = isHorizontal();
+ for (int i = firstIndex; i <= lastIndex; ++i) {
+ QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i));
+ if (item->isVisible()) {
+ if (i != m_fillIndex) {
+ size += horizontal ? item->width() : item->height();
+ } else {
+ // If the fill item has a minimum size specified, we must respect it.
+ const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ if (attached) {
+ const QQuickSplitViewAttachedPrivate *attachedPrivate
+ = QQuickSplitViewAttachedPrivate::get(attached);
+ if (horizontal && attachedPrivate->m_isMinimumWidthSet)
+ size += attachedPrivate->m_minimumWidth;
+ else if (!horizontal && attachedPrivate->m_isMinimumHeightSet)
+ size += attachedPrivate->m_minimumHeight;
+ }
+ }
+ }
+
+ // Only add the handle's width if there's actually a handle for this split item index.
+ if (i < lastIndex || lastIndex < contentModel->count() - 1) {
+ const QQuickItem *handleItem = m_handleItems.at(i);
+ if (handleItem->isVisible())
+ size += horizontal ? handleItem->width() : handleItem->height();
+ }
+ }
+ return size;
+}
+
+qreal effectiveMinimumWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isMinimumWidthSet ? attachedPrivate->m_minimumWidth : 0;
+}
+
+qreal effectiveMinimumHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isMinimumHeightSet ? attachedPrivate->m_minimumHeight : 0;
+}
+
+qreal effectivePreferredWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate,
+ const QQuickItemPrivate *itemPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isPreferredWidthSet
+ ? attachedPrivate->m_preferredWidth : itemPrivate->implicitWidth;
+}
+
+qreal effectivePreferredHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate,
+ const QQuickItemPrivate *itemPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isPreferredHeightSet
+ ? attachedPrivate->m_preferredHeight : itemPrivate->implicitHeight;
+}
+
+qreal effectiveMaximumWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isMaximumWidthSet
+ ? attachedPrivate->m_maximumWidth : std::numeric_limits<qreal>::infinity();
+}
+
+qreal effectiveMaximumHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate)
+{
+ return attachedPrivate && attachedPrivate->m_isMaximumHeightSet
+ ? attachedPrivate->m_maximumHeight : std::numeric_limits<qreal>::infinity();
+}
+
+// We don't just take an index, because the item and attached properties object
+// will both be used outside of this function by calling code, so save some
+// time by not accessing them twice.
+QQuickSplitViewPrivate::EffectiveSizeData QQuickSplitViewPrivate::effectiveSizeData(
+ const QQuickItemPrivate *itemPrivate, const QQuickSplitViewAttached *attached) const
+{
+ EffectiveSizeData data;
+ const QQuickSplitViewAttachedPrivate *attachedPrivate = attached ? QQuickSplitViewAttachedPrivate::get(attached) : nullptr;
+ data.effectiveMinimumWidth = effectiveMinimumWidth(attachedPrivate);
+ data.effectiveMinimumHeight = effectiveMinimumHeight(attachedPrivate);
+ data.effectivePreferredWidth = effectivePreferredWidth(attachedPrivate, itemPrivate);
+ data.effectivePreferredHeight = effectivePreferredHeight(attachedPrivate, itemPrivate);
+ data.effectiveMaximumWidth = effectiveMaximumWidth(attachedPrivate);
+ data.effectiveMaximumHeight = effectiveMaximumHeight(attachedPrivate);
+ return data;
+}
+
+int QQuickSplitViewPrivate::handleIndexForSplitIndex(int splitIndex) const
+{
+ // If it's the last item in the view, it doesn't have a handle, so use
+ // the handle for the previous item.
+ return splitIndex == contentModel->count() - 1 ? splitIndex - 1 : splitIndex;
+}
+
+void QQuickSplitViewPrivate::destroyHandles()
+{
+ qDeleteAll(m_handleItems);
+ m_handleItems.clear();
+}
+
+void QQuickSplitViewPrivate::resizeHandle(QQuickItem *handleItem)
+{
+ const bool horizontal = isHorizontal();
+ handleItem->setWidth(horizontal ? handleItem->implicitWidth() : width);
+ handleItem->setHeight(horizontal ? height : handleItem->implicitHeight());
+}
+
+void QQuickSplitViewPrivate::resizeHandles()
+{
+ for (QQuickItem *handleItem : m_handleItems)
+ resizeHandle(handleItem);
+}
+
+void QQuickSplitViewPrivate::updateHandleVisibilities()
+{
+ // If this is the first item that is visible, we won't have any
+ // handles yet, because we don't create a handle if we only have one item.
+ if (m_handleItems.isEmpty())
+ return;
+
+ // If the visibility/children change makes any item the last (right/bottom-most)
+ // visible item, we don't want to display a handle for it either:
+ // [ visible (fill) ] | [ hidden ] | [ hidden ]
+ // ^ ^
+ // hidden hidden
+ const int count = contentModel->count();
+ int lastVisibleItemIndex = -1;
+ for (int i = count - 1; i >= 0; --i) {
+ const QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i));
+ if (item->isVisible()) {
+ lastVisibleItemIndex = i;
+ break;
+ }
+ }
+
+ for (int i = 0; i < count - 1; ++i) {
+ const QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i));
+ QQuickItem *handleItem = m_handleItems.at(i);
+ if (i != lastVisibleItemIndex)
+ handleItem->setVisible(item->isVisible());
+ else
+ handleItem->setVisible(false);
+ qCDebug(qlcQQuickSplitView) << "set visible property of handle at index"
+ << i << "to" << handleItem->isVisible();
+ }
+}
+
+void QQuickSplitViewPrivate::setResizing(bool resizing)
+{
+ Q_Q(QQuickSplitView);
+ if (resizing == m_resizing)
+ return;
+
+ m_resizing = resizing;
+ emit q->resizingChanged();
+}
+
+bool QQuickSplitViewPrivate::isHorizontal() const
+{
+ return m_orientation == Qt::Horizontal;
+}
+
+QQuickItem *QQuickSplitViewPrivate::getContentItem()
+{
+ Q_Q(QQuickSplitView);
+ if (QQuickItem *item = QQuickContainerPrivate::getContentItem())
+ return item;
+
+ // TODO: why are several created?
+ return new QQuickContentItem(q);
+}
+
+void QQuickSplitViewPrivate::handlePress(const QPointF &point)
+{
+ Q_Q(QQuickSplitView);
+ QQuickContainerPrivate::handlePress(point);
+
+ QQuickItem *pressedItem = q->childAt(point.x(), point.y());
+ const int pressedHandleIndex = m_handleItems.indexOf(pressedItem);
+ if (pressedHandleIndex != -1) {
+ m_pressedHandleIndex = pressedHandleIndex;
+ m_pressPos = point;
+ m_mousePos = point;
+
+ const QQuickItem *leftOrTopItem = qobject_cast<QQuickItem*>(contentModel->object(m_pressedHandleIndex));
+ const QQuickItem *rightOrBottomItem = qobject_cast<QQuickItem*>(contentModel->object(m_pressedHandleIndex + 1));
+ const bool isHorizontal = m_orientation == Qt::Horizontal;
+ m_leftOrTopItemSizeBeforePress = isHorizontal ? leftOrTopItem->width() : leftOrTopItem->height();
+ m_rightOrBottomItemSizeBeforePress = isHorizontal ? rightOrBottomItem->width() : rightOrBottomItem->height();
+ m_handlePosBeforePress = pressedItem->position();
+
+ // Avoid e.g. Flickable stealing our drag if we're inside it.
+ q->setKeepMouseGrab(true);
+
+ // Force the attached object to be created since we rely on it.
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(pressedItem, true));
+ QQuickSplitHandleAttachedPrivate::get(handleAttached)->setPressed(true);
+
+ setResizing(true);
+
+ qCDebug(qlcQQuickSplitViewMouse).nospace() << "handled press -"
+ << " left/top index=" << m_pressedHandleIndex << ","
+ << " size before press=" << m_leftOrTopItemSizeBeforePress << ","
+ << " right/bottom index=" << m_pressedHandleIndex + 1 << ","
+ << " size before press=" << m_rightOrBottomItemSizeBeforePress;
+ }
+}
+
+void QQuickSplitViewPrivate::handleMove(const QPointF &point)
+{
+ QQuickContainerPrivate::handleMove(point);
+
+ if (m_pressedHandleIndex != -1) {
+ m_mousePos = point;
+ // Don't request layouts for input events because we want
+ // resizing to be as responsive and smooth as possible.
+ updatePolish();
+ }
+}
+
+void QQuickSplitViewPrivate::handleRelease(const QPointF &point)
+{
+ Q_Q(QQuickSplitView);
+ QQuickContainerPrivate::handleRelease(point);
+
+ if (m_pressedHandleIndex != -1) {
+ QQuickItem *pressedHandle = m_handleItems.at(m_pressedHandleIndex);
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(pressedHandle, true));
+ QQuickSplitHandleAttachedPrivate::get(handleAttached)->setPressed(false);
+ }
+
+ setResizing(false);
+
+ m_pressedHandleIndex = -1;
+ m_pressPos = QPointF();
+ m_mousePos = QPointF();
+ m_handlePosBeforePress = QPointF();
+ m_leftOrTopItemSizeBeforePress = 0.0;
+ m_rightOrBottomItemSizeBeforePress = 0.0;
+ q->setKeepMouseGrab(false);
+}
+
+void QQuickSplitViewPrivate::itemVisibilityChanged(QQuickItem *item)
+{
+ const int itemIndex = contentModel->indexOf(item, nullptr);
+ Q_ASSERT(itemIndex != -1);
+
+ qCDebug(qlcQQuickSplitView) << "visible property of split item"
+ << item << "at index" << itemIndex << "changed to" << item->isVisible();
+
+ // The visibility of an item just changed, so we need to update the visibility
+ // of the corresponding handle (if one exists).
+
+ const int handleIndex = handleIndexForSplitIndex(itemIndex);
+ QQuickItem *handleItem = m_handleItems.at(handleIndex);
+ handleItem->setVisible(item->isVisible());
+
+ qCDebug(qlcQQuickSplitView) << "set visible property of handle item"
+ << handleItem << "at index" << handleIndex << "to" << item->isVisible();
+
+ updateHandleVisibilities();
+ updateFillIndex();
+ requestLayout();
+}
+
+void QQuickSplitViewPrivate::itemImplicitWidthChanged(QQuickItem *)
+{
+ requestLayout();
+}
+
+void QQuickSplitViewPrivate::itemImplicitHeightChanged(QQuickItem *)
+{
+ requestLayout();
+}
+
+void QQuickSplitViewPrivate::updatePolish()
+{
+ layout();
+}
+
+QQuickSplitViewPrivate *QQuickSplitViewPrivate::get(QQuickSplitView *splitView)
+{
+ return splitView->d_func();
+}
+
+QQuickSplitView::QQuickSplitView(QQuickItem *parent)
+ : QQuickContainer(*(new QQuickSplitViewPrivate), parent)
+{
+ Q_D(QQuickSplitView);
+ d->changeTypes |= QQuickItemPrivate::Visibility;
+
+ setAcceptedMouseButtons(Qt::LeftButton);
+}
+
+QQuickSplitView::QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent)
+ : QQuickContainer(dd, parent)
+{
+ Q_D(QQuickSplitView);
+ d->changeTypes |= QQuickItemPrivate::Visibility;
+
+ setAcceptedMouseButtons(Qt::LeftButton);
+}
+
+QQuickSplitView::~QQuickSplitView()
+{
+ Q_D(QQuickSplitView);
+ for (int i = 0; i < d->contentModel->count(); ++i) {
+ QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(i));
+ d->removeImplicitSizeListener(item);
+ }
+}
+
+/*!
+ \qmlproperty enumeration QtQuick.Controls::SplitView::orientation
+
+ This property holds the orientation of the SplitView.
+
+ The orientation determines how the split items are laid out:
+
+ Possible values:
+ \value Qt.Horizontal The items are laid out horizontally (default).
+ \value Qt.Vertical The items are laid out vertically.
+*/
+Qt::Orientation QQuickSplitView::orientation() const
+{
+ Q_D(const QQuickSplitView);
+ return d->m_orientation;
+}
+
+void QQuickSplitView::setOrientation(Qt::Orientation orientation)
+{
+ Q_D(QQuickSplitView);
+ if (orientation == d->m_orientation)
+ return;
+
+ d->m_orientation = orientation;
+ d->resizeHandles();
+ d->requestLayout();
+ emit orientationChanged();
+}
+
+/*!
+ \qmlproperty bool QtQuick.Controls::SplitView::resizing
+ \readonly
+
+ This property is \c true when the user is resizing
+ split items by dragging on the splitter handles.
+*/
+bool QQuickSplitView::isResizing() const
+{
+ Q_D(const QQuickSplitView);
+ return d->m_resizing;
+}
+
+/*!
+ \qmlproperty Component QtQuick.Controls::SplitView::handle
+
+ This property holds the handle component.
+
+ An instance of this component will be instantiated \c {count - 1}
+ times, as long as \l count is greater than than \c {1}.
+
+ The following table explains how each handle will be resized
+ depending on the orientation of the split view:
+
+ \table
+ \header
+ \li Orientation
+ \li Handle Width
+ \li Handle Height
+ \row
+ \li \c Qt.Horizontal
+ \li \c implicitWidth
+ \li The \l height of the SplitView.
+ \row
+ \li \c Qt.Vertical
+ \li The \l width of the SplitView.
+ \li \c implicitHeight
+ \endtable
+
+ \sa {Customizing SplitView}
+*/
+QQmlComponent *QQuickSplitView::handle()
+{
+ Q_D(const QQuickSplitView);
+ return d->m_handle;
+}
+
+void QQuickSplitView::setHandle(QQmlComponent *handle)
+{
+ Q_D(QQuickSplitView);
+ if (handle == d->m_handle)
+ return;
+
+ qCDebug(qlcQQuickSplitView) << "setting handle" << handle;
+
+ if (d->m_handle)
+ d->destroyHandles();
+
+ d->m_handle = handle;
+
+ if (d->m_handle)
+ d->createHandles();
+
+ d->requestLayout();
+
+ emit handleChanged();
+}
+
+bool QQuickSplitView::isContent(QQuickItem *item) const
+{
+ Q_D(const QQuickSplitView);
+ if (!qmlContext(item))
+ return false;
+
+ if (QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ return false;
+
+ return !d->m_handleItems.contains(item);
+}
+
+QQuickSplitViewAttached *QQuickSplitView::qmlAttachedProperties(QObject *object)
+{
+ return new QQuickSplitViewAttached(object);
+}
+
+/*!
+ \qmlmethod var QtQuick.Controls::SplitView::saveState()
+
+ Saves the preferred sizes of split items into a byte array and returns it.
+
+ \sa {Serializing SplitView's State}, restoreState()
+*/
+QVariant QQuickSplitView::saveState()
+{
+ Q_D(QQuickSplitView);
+ qCDebug(qlcQQuickSplitViewState) << "saving state for split items in" << this;
+
+ // Save the preferred sizes of each split item.
+ QCborArray cborArray;
+ for (int i = 0; i < d->contentModel->count(); ++i) {
+ const QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(i));
+ const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ // Don't serialise stuff if we don't need to. If a split item was given a preferred
+ // size in QML or it was dragged, it will have an attached object and either
+ // m_isPreferredWidthSet or m_isPreferredHeightSet (or both) will be true,
+ // so items without these can be skipped. We write the index of each item
+ // that has data so that we know which item to set it on when restoring.
+ if (!attached)
+ continue;
+
+ const QQuickSplitViewAttachedPrivate *attachedPrivate = QQuickSplitViewAttachedPrivate::get(attached);
+ if (!attachedPrivate->m_isPreferredWidthSet && !attachedPrivate->m_isPreferredHeightSet)
+ continue;
+
+ QCborMap cborMap;
+ cborMap[QLatin1String("index")] = i;
+ if (attachedPrivate->m_isPreferredWidthSet) {
+ cborMap[QLatin1String("preferredWidth")] = static_cast<double>(attachedPrivate->m_preferredWidth);
+
+ qCDebug(qlcQQuickSplitViewState).nospace() << "- wrote preferredWidth of "
+ << attachedPrivate->m_preferredWidth << " for split item " << item << " at index " << i;
+ }
+ if (attachedPrivate->m_isPreferredHeightSet) {
+ cborMap[QLatin1String("preferredHeight")] = static_cast<double>(attachedPrivate->m_preferredHeight);
+
+ qCDebug(qlcQQuickSplitViewState).nospace() << "- wrote preferredHeight of "
+ << attachedPrivate->m_preferredHeight << " for split item " << item << " at index " << i;
+ }
+
+ cborArray.append(cborMap);
+ }
+
+ const QByteArray byteArray = cborArray.toCborValue().toCbor();
+ qCDebug(qlcQQuickSplitViewState) << "the resulting byte array is:" << byteArray;
+ return QVariant(byteArray);
+}
+
+/*!
+ \qmlmethod bool QtQuick.Controls::SplitView::restoreState(state)
+
+ Reads the preferred sizes from \a state and applies them to the split items.
+
+ Returns \c true if the state was successfully restored, otherwise \c false.
+
+ \sa {Serializing SplitView's State}, saveState()
+*/
+bool QQuickSplitView::restoreState(const QVariant &state)
+{
+ const QByteArray cborByteArray = state.toByteArray();
+ Q_D(QQuickSplitView);
+ if (cborByteArray.isEmpty())
+ return false;
+
+ QCborParserError parserError;
+ const QCborValue cborValue(QCborValue::fromCbor(cborByteArray, &parserError));
+ if (parserError.error != QCborError::NoError) {
+ qmlWarning(this) << "Error reading SplitView state:" << parserError.errorString();
+ return false;
+ }
+
+ qCDebug(qlcQQuickSplitViewState) << "restoring state for split items of" << this
+ << "from the following string:" << state;
+
+ const QCborArray cborArray(cborValue.toArray());
+ const int ourCount = d->contentModel->count();
+ // This could conceivably happen if items were removed from the SplitView since the state was last saved.
+ if (cborArray.size() > ourCount) {
+ qmlWarning(this) << "Error reading SplitView state: expected "
+ << ourCount << " or less split items but got " << cborArray.size();
+ return false;
+ }
+
+ for (auto it = cborArray.constBegin(); it != cborArray.constEnd(); ++it) {
+ QCborMap cborMap(it->toMap());
+ const int splitItemIndex = cborMap.value(QLatin1String("index")).toInteger();
+ const bool isPreferredWidthSet = cborMap.contains(QLatin1String("preferredWidth"));
+ const bool isPreferredHeightSet = cborMap.contains(QLatin1String("preferredHeight"));
+
+ QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(splitItemIndex));
+ // If the split item does not have a preferred size specified in QML, it could still have
+ // been resized via dragging before it was saved. In this case, it won't have an
+ // attached object upon application startup, so we create it.
+ QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, true));
+ if (isPreferredWidthSet) {
+ const qreal preferredWidth = cborMap.value(QLatin1String("preferredWidth")).toDouble();
+ attached->setPreferredWidth(preferredWidth);
+ }
+ if (isPreferredHeightSet) {
+ const qreal preferredHeight = cborMap.value(QLatin1String("preferredHeight")).toDouble();
+ attached->setPreferredHeight(preferredHeight);
+ }
+
+ const QQuickSplitViewAttachedPrivate *attachedPrivate = QQuickSplitViewAttachedPrivate::get(attached);
+ qCDebug(qlcQQuickSplitViewState).nospace()
+ << "- restored the following state for split item " << item << " at index " << splitItemIndex
+ << ": preferredWidthSet=" << attachedPrivate->m_isPreferredWidthSet
+ << " preferredWidth=" << attachedPrivate->m_preferredWidth
+ << " preferredHeightSet=" << attachedPrivate->m_isPreferredHeightSet
+ << " preferredHeight=" << attachedPrivate->m_preferredHeight;
+ }
+
+ return true;
+}
+
+void QQuickSplitView::componentComplete()
+{
+ Q_D(QQuickSplitView);
+ QQuickControl::componentComplete();
+ d->resizeHandles();
+ d->updateFillIndex();
+ d->updatePolish();
+}
+
+void QQuickSplitView::hoverMoveEvent(QHoverEvent *event)
+{
+ Q_D(QQuickSplitView);
+ QQuickContainer::hoverMoveEvent(event);
+
+ QQuickItem *hoveredItem = childAt(event->pos().x(), event->pos().y());
+ if (!hoveredItem) {
+ // No handle is hovered.
+ if (d->m_hoveredHandleIndex != -1) {
+ // The previously-hovered handle is no longer hovered.
+ QQuickItem *oldHoveredHandle = d->m_handleItems.at(d->m_hoveredHandleIndex);
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(oldHoveredHandle, true));
+ QQuickSplitHandleAttachedPrivate::get(handleAttached)->setHovered(false);
+ }
+
+ qCDebug(qlcQQuickSplitViewMouse) << "handle item at index" << d->m_hoveredHandleIndex << "is no longer hovered";
+
+ d->m_hoveredHandleIndex = -1;
+
+#if QT_CONFIG(cursor)
+ setCursor(Qt::ArrowCursor);
+#endif
+ } else {
+ // A child item of ours is hovered.
+
+ // First, clear the hovered flag of any previously-hovered handle.
+ if (d->m_hoveredHandleIndex != -1) {
+ QQuickItem *oldHoveredHandle = d->m_handleItems.at(d->m_hoveredHandleIndex);
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(oldHoveredHandle, true));
+ QQuickSplitHandleAttachedPrivate::get(handleAttached)->setHovered(false);
+ }
+
+ // Now check if the newly hovered item is actually a handle.
+ const int hoveredHandleIndex = d->m_handleItems.indexOf(hoveredItem);
+ if (hoveredHandleIndex == -1)
+ return;
+
+ // It's a handle, so it's now hovered.
+ d->m_hoveredHandleIndex = hoveredHandleIndex;
+
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(hoveredItem, true));
+ QQuickSplitHandleAttachedPrivate::get(handleAttached)->setHovered(true);
+
+#if QT_CONFIG(cursor)
+ setCursor(d->m_orientation == Qt::Horizontal ? Qt::SplitHCursor : Qt::SplitVCursor);
+#endif
+
+ qCDebug(qlcQQuickSplitViewMouse) << "handle item at index" << d->m_hoveredHandleIndex << "is now hovered";
+ }
+}
+
+void QQuickSplitView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
+{
+ Q_D(QQuickSplitView);
+ QQuickControl::geometryChanged(newGeometry, oldGeometry);
+ d->resizeHandles();
+ d->requestLayout();
+}
+
+void QQuickSplitView::itemAdded(int index, QQuickItem *item)
+{
+ Q_D(QQuickSplitView);
+ if (QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ return;
+
+ const int count = d->contentModel->count();
+ qCDebug(qlcQQuickSplitView).nospace() << "split item " << item << " added at index " << index
+ << "; there are now " << count << " items";
+
+ QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ if (attached)
+ QQuickSplitViewAttachedPrivate::get(attached)->setView(this);
+
+ // Only need to add handles if we have more than one split item.
+ if (count > 1) {
+ // If the item was added at the end, it shouldn't get a handle;
+ // the handle always goes to the split item on the left.
+ d->createHandleItem(index < count - 1 ? index : index - 1);
+ }
+
+ d->addImplicitSizeListener(item);
+
+ d->updateHandleVisibilities();
+ d->updateFillIndex();
+ d->requestLayout();
+}
+
+void QQuickSplitView::itemMoved(int index, QQuickItem *item)
+{
+ Q_D(QQuickSplitView);
+ if (QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ return;
+
+ qCDebug(qlcQQuickSplitView) << "split item" << item << "moved to index" << index;
+
+ d->updateHandleVisibilities();
+ d->updateFillIndex();
+ d->requestLayout();
+}
+
+void QQuickSplitView::itemRemoved(int index, QQuickItem *item)
+{
+ Q_D(QQuickSplitView);
+ if (QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ return;
+
+ qCDebug(qlcQQuickSplitView).nospace() << "split item " << item << " removed from index " << index
+ << "; there are now " << d->contentModel->count() << " items";
+
+ // Clear hovered/pressed handle if there are any.
+ if (d->m_hoveredHandleIndex != -1 || d->m_pressedHandleIndex != -1) {
+ const int handleIndex = d->m_hoveredHandleIndex != -1 ? d->m_hoveredHandleIndex : d->m_pressedHandleIndex;
+ QQuickItem *itemHandle = d->m_handleItems.at(handleIndex);
+ QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(itemHandle, false));
+ if (handleAttached) {
+ auto handleAttachedPrivate = QQuickSplitHandleAttachedPrivate::get(handleAttached);
+ handleAttachedPrivate->setHovered(false);
+ handleAttachedPrivate->setPressed(false);
+ }
+
+ setKeepMouseGrab(false);
+ d->m_hoveredHandleIndex = -1;
+ d->m_pressedHandleIndex = -1;
+ }
+
+ // Unset any attached properties since the item is no longer owned by us.
+ QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>(
+ qmlAttachedPropertiesObject<QQuickSplitView>(item, false));
+ if (attached)
+ QQuickSplitViewAttachedPrivate::get(attached)->setView(this);
+
+ d->removeImplicitSizeListener(item);
+
+ d->removeExcessHandles();
+ d->updateHandleVisibilities();
+ d->updateFillIndex();
+ d->requestLayout();
+}
+
+#if QT_CONFIG(accessibility)
+QAccessible::Role QQuickSplitView::accessibleRole() const
+{
+ return QAccessible::Pane;
+}
+#endif
+
+QQuickSplitViewAttached::QQuickSplitViewAttached(QObject *parent)
+ : QObject(*(new QQuickSplitViewAttachedPrivate), parent)
+{
+ Q_D(QQuickSplitViewAttached);
+ QQuickItem *item = qobject_cast<QQuickItem *>(parent);
+ if (!item) {
+ qmlWarning(parent) << "SplitView: attached properties can only be used on Items";
+ return;
+ }
+
+ if (QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ return;
+
+ d->m_splitItem = item;
+
+ // Child items get added to SplitView's contentItem, so we have to ensure
+ // that exists first before trying to set m_splitView.
+ // Apparently, in some cases it's normal for the parent item
+ // to not exist until shortly after this constructor has run.
+ if (!item->parentItem())
+ return;
+
+ // This will get hit when attached SplitView properties are imperatively set
+ // on an item that previously had none set, for example.
+ QQuickSplitView *splitView = qobject_cast<QQuickSplitView*>(item->parentItem()->parentItem());
+ if (!splitView) {
+ qmlWarning(parent) << "SplitView: attached properties must be accessed through a direct child of SplitView";
+ return;
+ }
+
+ d->setView(splitView);
+}
+
+/*!
+ \qmlattachedproperty SplitView QtQuick.Controls::SplitView::view
+
+ This attached property holds the split view of the item it is
+ attached to, or \c null if the item is not in a split view.
+*/
+QQuickSplitView *QQuickSplitViewAttached::view() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_splitView;
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::minimumWidth
+
+ This attached property controls the minimum width of the split item.
+ The \l preferredWidth is bound within the \l minimumWidth and
+ \l maximumWidth. A split item cannot be dragged to be smaller than
+ its \c minimumWidth.
+
+ The default value is \c 0. To reset this property to its default value,
+ set it to \c undefined.
+
+ \sa maximumWidth, preferredWidth, fillWidth, minimumHeight
+*/
+qreal QQuickSplitViewAttached::minimumWidth() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_minimumWidth;
+}
+
+void QQuickSplitViewAttached::setMinimumWidth(qreal width)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isMinimumWidthSet = true;
+ if (qFuzzyCompare(width, d->m_minimumWidth))
+ return;
+
+ d->m_minimumWidth = width;
+ d->requestLayoutView();
+ emit minimumWidthChanged();
+}
+
+void QQuickSplitViewAttached::resetMinimumWidth()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectiveMinimumWidth = effectiveMinimumWidth(d);
+
+ d->m_isMinimumWidthSet = false;
+ d->m_minimumWidth = -1;
+
+ const qreal newEffectiveMinimumWidth = effectiveMinimumWidth(d);
+ if (qFuzzyCompare(newEffectiveMinimumWidth, oldEffectiveMinimumWidth))
+ return;
+
+ d->requestLayoutView();
+ emit minimumWidthChanged();
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::minimumHeight
+
+ This attached property controls the minimum height of the split item.
+ The \l preferredHeight is bound within the \l minimumHeight and
+ \l maximumHeight. A split item cannot be dragged to be smaller than
+ its \c minimumHeight.
+
+ The default value is \c 0. To reset this property to its default value,
+ set it to \c undefined.
+
+ \sa maximumHeight, preferredHeight, fillHeight, minimumWidth
+*/
+qreal QQuickSplitViewAttached::minimumHeight() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_minimumHeight;
+}
+
+void QQuickSplitViewAttached::setMinimumHeight(qreal height)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isMinimumHeightSet = true;
+ if (qFuzzyCompare(height, d->m_minimumHeight))
+ return;
+
+ d->m_minimumHeight = height;
+ d->requestLayoutView();
+ emit minimumHeightChanged();
+}
+
+void QQuickSplitViewAttached::resetMinimumHeight()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectiveMinimumHeight = effectiveMinimumHeight(d);
+
+ d->m_isMinimumHeightSet = false;
+ d->m_minimumHeight = -1;
+
+ const qreal newEffectiveMinimumHeight = effectiveMinimumHeight(d);
+ if (qFuzzyCompare(newEffectiveMinimumHeight, oldEffectiveMinimumHeight))
+ return;
+
+ d->requestLayoutView();
+ emit minimumHeightChanged();
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::preferredWidth
+
+ This attached property controls the preferred width of the split item. The
+ preferred width will be used as the size of the item, and will be bound
+ within the \l minimumWidth and \l maximumWidth. If the preferred width
+ is not set, the item's \l {Item::}{implicitWidth} will be used.
+
+ When a split item is resized, the preferredWidth will be set in order
+ to keep track of the new size.
+
+ By default, this property is not set, and therefore
+ \l {Item::}{implicitWidth} will be used instead. To reset this property to
+ its default value, set it to \c undefined.
+
+ \note Do not set the \l width property of a split item, as it will be
+ overwritten upon each layout of the SplitView.
+
+ \sa minimumWidth, maximumWidth, fillWidth, preferredHeight
+*/
+qreal QQuickSplitViewAttached::preferredWidth() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_preferredWidth;
+}
+
+void QQuickSplitViewAttached::setPreferredWidth(qreal width)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isPreferredWidthSet = true;
+ // Make sure that we clear this flag now, before we emit the change signals
+ // which could cause another setter to be called.
+ auto splitViewPrivate = d->m_splitView ? QQuickSplitViewPrivate::get(d->m_splitView) : nullptr;
+ const bool ignoreNextLayoutRequest = splitViewPrivate && splitViewPrivate->m_ignoreNextLayoutRequest;
+ if (splitViewPrivate)
+ splitViewPrivate->m_ignoreNextLayoutRequest = false;
+
+ if (qFuzzyCompare(width, d->m_preferredWidth))
+ return;
+
+ d->m_preferredWidth = width;
+
+ if (!ignoreNextLayoutRequest) {
+ // We are currently in the middle of performing a layout, and the user (not our internal code)
+ // changed the preferred width of one of the split items, so request another layout.
+ d->requestLayoutView();
+ }
+
+ emit preferredWidthChanged();
+}
+
+void QQuickSplitViewAttached::resetPreferredWidth()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectivePreferredWidth = effectivePreferredWidth(
+ d, QQuickItemPrivate::get(d->m_splitItem));
+
+ d->m_isPreferredWidthSet = false;
+ d->m_preferredWidth = -1;
+
+ const qreal newEffectivePreferredWidth = effectivePreferredWidth(
+ d, QQuickItemPrivate::get(d->m_splitItem));
+ if (qFuzzyCompare(newEffectivePreferredWidth, oldEffectivePreferredWidth))
+ return;
+
+ d->requestLayoutView();
+ emit preferredWidthChanged();
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::preferredHeight
+
+ This attached property controls the preferred height of the split item. The
+ preferred height will be used as the size of the item, and will be bound
+ within the \l minimumHeight and \l maximumHeight. If the preferred height
+ is not set, the item's \l {Item::}{implicitHeight} will be used.
+
+ When a split item is resized, the preferredHeight will be set in order
+ to keep track of the new size.
+
+ By default, this property is not set, and therefore
+ \l {Item::}{implicitHeight} will be used instead. To reset this property to
+ its default value, set it to \c undefined.
+
+ \note Do not set the \l height property of a split item, as it will be
+ overwritten upon each layout of the SplitView.
+
+ \sa minimumHeight, maximumHeight, fillHeight, preferredWidth
+*/
+qreal QQuickSplitViewAttached::preferredHeight() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_preferredHeight;
+}
+
+void QQuickSplitViewAttached::setPreferredHeight(qreal height)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isPreferredHeightSet = true;
+ // Make sure that we clear this flag now, before we emit the change signals
+ // which could cause another setter to be called.
+ auto splitViewPrivate = d->m_splitView ? QQuickSplitViewPrivate::get(d->m_splitView) : nullptr;
+ const bool ignoreNextLayoutRequest = splitViewPrivate && splitViewPrivate->m_ignoreNextLayoutRequest;
+ if (splitViewPrivate)
+ splitViewPrivate->m_ignoreNextLayoutRequest = false;
+
+ if (qFuzzyCompare(height, d->m_preferredHeight))
+ return;
+
+ d->m_preferredHeight = height;
+
+ if (!ignoreNextLayoutRequest) {
+ // We are currently in the middle of performing a layout, and the user (not our internal code)
+ // changed the preferred height of one of the split items, so request another layout.
+ d->requestLayoutView();
+ }
+
+ emit preferredHeightChanged();
+}
+
+void QQuickSplitViewAttached::resetPreferredHeight()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectivePreferredHeight = effectivePreferredHeight(
+ d, QQuickItemPrivate::get(d->m_splitItem));
+
+ d->m_isPreferredHeightSet = false;
+ d->m_preferredHeight = -1;
+
+ const qreal newEffectivePreferredHeight = effectivePreferredHeight(
+ d, QQuickItemPrivate::get(d->m_splitItem));
+ if (qFuzzyCompare(newEffectivePreferredHeight, oldEffectivePreferredHeight))
+ return;
+
+ d->requestLayoutView();
+ emit preferredHeightChanged();
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::maximumWidth
+
+ This attached property controls the maximum width of the split item.
+ The \l preferredWidth is bound within the \l minimumWidth and
+ \l maximumWidth. A split item cannot be dragged to be larger than
+ its \c maximumWidth.
+
+ The default value is \c Infinity. To reset this property to its default
+ value, set it to \c undefined.
+
+ \sa minimumWidth, preferredWidth, fillWidth, maximumHeight
+*/
+qreal QQuickSplitViewAttached::maximumWidth() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_maximumWidth;
+}
+
+void QQuickSplitViewAttached::setMaximumWidth(qreal width)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isMaximumWidthSet = true;
+ if (qFuzzyCompare(width, d->m_maximumWidth))
+ return;
+
+ d->m_maximumWidth = width;
+ d->requestLayoutView();
+ emit maximumWidthChanged();
+}
+
+void QQuickSplitViewAttached::resetMaximumWidth()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectiveMaximumWidth = effectiveMaximumWidth(d);
+
+ d->m_isMaximumWidthSet = false;
+ d->m_maximumWidth = -1;
+
+ const qreal newEffectiveMaximumWidth = effectiveMaximumWidth(d);
+ if (qFuzzyCompare(newEffectiveMaximumWidth, oldEffectiveMaximumWidth))
+ return;
+
+ d->requestLayoutView();
+ emit maximumWidthChanged();
+}
+
+/*!
+ \qmlattachedproperty real QtQuick.Controls::SplitView::maximumHeight
+
+ This attached property controls the maximum height of the split item.
+ The \l preferredHeight is bound within the \l minimumHeight and
+ \l maximumHeight. A split item cannot be dragged to be larger than
+ its \c maximumHeight.
+
+ The default value is \c Infinity. To reset this property to its default
+ value, set it to \c undefined.
+
+ \sa minimumHeight, preferredHeight, fillHeight, maximumWidth
+*/
+qreal QQuickSplitViewAttached::maximumHeight() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_maximumHeight;
+}
+
+void QQuickSplitViewAttached::setMaximumHeight(qreal height)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isMaximumHeightSet = true;
+ if (qFuzzyCompare(height, d->m_maximumHeight))
+ return;
+
+ d->m_maximumHeight = height;
+ d->requestLayoutView();
+ emit maximumHeightChanged();
+}
+
+void QQuickSplitViewAttached::resetMaximumHeight()
+{
+ Q_D(QQuickSplitViewAttached);
+ const qreal oldEffectiveMaximumHeight = effectiveMaximumHeight(d);
+
+ d->m_isMaximumHeightSet = false;
+ d->m_maximumHeight = -1;
+
+ const qreal newEffectiveMaximumHeight = effectiveMaximumHeight(d);
+ if (qFuzzyCompare(newEffectiveMaximumHeight, oldEffectiveMaximumHeight))
+ return;
+
+ d->requestLayoutView();
+ emit maximumHeightChanged();
+}
+
+/*!
+ \qmlattachedproperty bool QtQuick.Controls::SplitView::fillWidth
+
+ This attached property controls whether the item takes the remaining space
+ in the split view after all other items have been laid out.
+
+ By default, the last visible child of the split view will have this set,
+ but it can be changed by explicitly setting \c fillWidth to \c true on
+ another item.
+
+ The width of a split item with \c fillWidth set to \c true is still
+ restricted within its \l minimumWidth and \l maximumWidth.
+
+ \sa minimumWidth, preferredWidth, maximumWidth, fillHeight
+*/
+bool QQuickSplitViewAttached::fillWidth() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_fillWidth;
+}
+
+void QQuickSplitViewAttached::setFillWidth(bool fill)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isFillWidthSet = true;
+ if (fill == d->m_fillWidth)
+ return;
+
+ d->m_fillWidth = fill;
+ if (d->m_splitView && d->m_splitView->orientation() == Qt::Horizontal)
+ QQuickSplitViewPrivate::get(d->m_splitView)->updateFillIndex();
+ d->requestLayoutView();
+ emit fillWidthChanged();
+}
+
+/*!
+ \qmlattachedproperty bool QtQuick.Controls::SplitView::fillHeight
+
+ This attached property controls whether the item takes the remaining space
+ in the split view after all other items have been laid out.
+
+ By default, the last visible child of the split view will have this set,
+ but it can be changed by explicitly setting \c fillHeight to \c true on
+ another item.
+
+ The height of a split item with \c fillHeight set to \c true is still
+ restricted within its \l minimumHeight and \l maximumHeight.
+
+ \sa minimumHeight, preferredHeight, maximumHeight, fillWidth
+*/
+bool QQuickSplitViewAttached::fillHeight() const
+{
+ Q_D(const QQuickSplitViewAttached);
+ return d->m_fillHeight;
+}
+
+void QQuickSplitViewAttached::setFillHeight(bool fill)
+{
+ Q_D(QQuickSplitViewAttached);
+ d->m_isFillHeightSet = true;
+ if (fill == d->m_fillHeight)
+ return;
+
+ d->m_fillHeight = fill;
+ if (d->m_splitView && d->m_splitView->orientation() == Qt::Vertical)
+ QQuickSplitViewPrivate::get(d->m_splitView)->updateFillIndex();
+ d->requestLayoutView();
+ emit fillHeightChanged();
+}
+
+QQuickSplitViewAttachedPrivate::QQuickSplitViewAttachedPrivate()
+ : m_fillWidth(false)
+ , m_fillHeight(false)
+ , m_isFillWidthSet(false)
+ , m_isFillHeightSet(false)
+ , m_isMinimumWidthSet(false)
+ , m_isMinimumHeightSet(false)
+ , m_isPreferredWidthSet(false)
+ , m_isPreferredHeightSet(false)
+ , m_isMaximumWidthSet(false)
+ , m_isMaximumHeightSet(false)
+ , m_minimumWidth(0)
+ , m_minimumHeight(0)
+ , m_preferredWidth(-1)
+ , m_preferredHeight(-1)
+ , m_maximumWidth(std::numeric_limits<qreal>::infinity())
+ , m_maximumHeight(std::numeric_limits<qreal>::infinity())
+{
+}
+
+void QQuickSplitViewAttachedPrivate::setView(QQuickSplitView *newView)
+{
+ Q_Q(QQuickSplitViewAttached);
+ if (newView == m_splitView)
+ return;
+
+ m_splitView = newView;
+ qCDebug(qlcQQuickSplitView) << "set SplitView" << newView << "on attached object" << this;
+ emit q->viewChanged();
+}
+
+void QQuickSplitViewAttachedPrivate::requestLayoutView()
+{
+ if (m_splitView)
+ QQuickSplitViewPrivate::get(m_splitView)->requestLayout();
+}
+
+QQuickSplitViewAttachedPrivate *QQuickSplitViewAttachedPrivate::get(QQuickSplitViewAttached *attached)
+{
+ return attached->d_func();
+}
+
+const QQuickSplitViewAttachedPrivate *QQuickSplitViewAttachedPrivate::get(const QQuickSplitViewAttached *attached)
+{
+ return attached->d_func();
+}
+
+QQuickSplitHandleAttachedPrivate::QQuickSplitHandleAttachedPrivate()
+ : m_hovered(false)
+ , m_pressed(false)
+{
+}
+
+void QQuickSplitHandleAttachedPrivate::setHovered(bool hovered)
+{
+ Q_Q(QQuickSplitHandleAttached);
+ if (hovered == m_hovered)
+ return;
+
+ m_hovered = hovered;
+ emit q->hoveredChanged();
+}
+
+void QQuickSplitHandleAttachedPrivate::setPressed(bool pressed)
+{
+ Q_Q(QQuickSplitHandleAttached);
+ if (pressed == m_pressed)
+ return;
+
+ m_pressed = pressed;
+ emit q->pressedChanged();
+}
+
+QQuickSplitHandleAttachedPrivate *QQuickSplitHandleAttachedPrivate::get(QQuickSplitHandleAttached *attached)
+{
+ return attached->d_func();
+}
+
+const QQuickSplitHandleAttachedPrivate *QQuickSplitHandleAttachedPrivate::get(const QQuickSplitHandleAttached *attached)
+{
+ return attached->d_func();
+}
+
+QQuickSplitHandleAttached::QQuickSplitHandleAttached(QObject *parent)
+ : QObject(*(new QQuickSplitViewAttachedPrivate), parent)
+{
+}
+
+/*!
+ \qmltype SplitHandle
+ \inherits QtObject
+ \instantiates QQuickSplitHandleAttached
+ \inqmlmodule QtQuick.Controls
+ \since 5.13
+ \brief Provides attached properties for SplitView handles
+
+ SplitHandle provides attached properties for \l SplitView handles.
+
+ For split items themselves, use the attached \l SplitView properties.
+
+ \sa SplitView
+*/
+
+/*!
+ \qmlattachedproperty bool QtQuick.Controls::SplitHandle::hovered
+
+ This attached property holds whether the split handle is hovered.
+
+ \sa pressed
+*/
+bool QQuickSplitHandleAttached::isHovered() const
+{
+ Q_D(const QQuickSplitHandleAttached);
+ return d->m_hovered;
+}
+
+/*!
+ \qmlattachedproperty bool QtQuick.Controls::SplitHandle::pressed
+
+ This attached property holds whether the split handle is pressed.
+
+ \sa hovered
+*/
+bool QQuickSplitHandleAttached::isPressed() const
+{
+ Q_D(const QQuickSplitHandleAttached);
+ return d->m_pressed;
+}
+
+QQuickSplitHandleAttached *QQuickSplitHandleAttached::qmlAttachedProperties(QObject *object)
+{
+ return new QQuickSplitHandleAttached(object);
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qquicksplitview_p.cpp"
diff --git a/src/quicktemplates2/qquicksplitview_p.h b/src/quicktemplates2/qquicksplitview_p.h
new file mode 100644
index 00000000..99001615
--- /dev/null
+++ b/src/quicktemplates2/qquicksplitview_p.h
@@ -0,0 +1,218 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKSPLITVIEW_P_H
+#define QQUICKSPLITVIEW_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtQuickTemplates2/private/qquickcontainer_p.h>
+#include <QtQml/qqmllist.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickSplitViewPrivate;
+class QQuickSplitViewAttached;
+class QQuickSplitViewAttachedPrivate;
+class QQuickSplitHandleAttached;
+class QQuickSplitHandleAttachedPrivate;
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitView : public QQuickContainer
+{
+ Q_OBJECT
+ Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL)
+ Q_PROPERTY(bool resizing READ isResizing NOTIFY resizingChanged)
+ Q_PROPERTY(QQmlComponent *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL)
+
+public:
+ explicit QQuickSplitView(QQuickItem *parent = nullptr);
+ ~QQuickSplitView() override;
+
+ Qt::Orientation orientation() const;
+ void setOrientation(Qt::Orientation orientation);
+
+ bool isResizing() const;
+
+ QQmlComponent *handle();
+ void setHandle(QQmlComponent *handle);
+
+ bool isContent(QQuickItem *item) const override;
+
+ static QQuickSplitViewAttached *qmlAttachedProperties(QObject *object);
+
+ // Based on the same code in QMainWindow.
+ enum VersionMarkers {
+ VersionMarker = 0xff
+ };
+ Q_INVOKABLE QVariant saveState();
+ Q_INVOKABLE bool restoreState(const QVariant &state);
+
+Q_SIGNALS:
+ void orientationChanged();
+ void resizingChanged();
+ void handleChanged();
+
+protected:
+ QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent);
+
+ void componentComplete() override;
+ void hoverMoveEvent(QHoverEvent *event) override;
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+
+ void itemAdded(int index, QQuickItem *item) override;
+ void itemMoved(int index, QQuickItem *item) override;
+ void itemRemoved(int index, QQuickItem *item) override;
+
+#if QT_CONFIG(accessibility)
+ QAccessible::Role accessibleRole() const override;
+#endif
+
+private:
+ Q_DISABLE_COPY(QQuickSplitView)
+ Q_DECLARE_PRIVATE(QQuickSplitView)
+};
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitViewAttached : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QQuickSplitView *view READ view NOTIFY viewChanged FINAL)
+ Q_PROPERTY(qreal minimumWidth READ minimumWidth WRITE setMinimumWidth
+ RESET resetMinimumWidth NOTIFY minimumWidthChanged FINAL)
+ Q_PROPERTY(qreal minimumHeight READ minimumHeight WRITE setMinimumHeight
+ RESET resetMinimumHeight NOTIFY minimumHeightChanged FINAL)
+ Q_PROPERTY(qreal preferredWidth READ preferredWidth WRITE setPreferredWidth
+ RESET resetPreferredWidth NOTIFY preferredWidthChanged FINAL)
+ Q_PROPERTY(qreal preferredHeight READ preferredHeight WRITE setPreferredHeight
+ RESET resetPreferredHeight NOTIFY preferredHeightChanged FINAL)
+ Q_PROPERTY(qreal maximumWidth READ maximumWidth WRITE setMaximumWidth
+ RESET resetMaximumWidth NOTIFY maximumWidthChanged FINAL)
+ Q_PROPERTY(qreal maximumHeight READ maximumHeight WRITE setMaximumHeight
+ RESET resetMaximumHeight NOTIFY maximumHeightChanged FINAL)
+ Q_PROPERTY(bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL)
+ Q_PROPERTY(bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL)
+
+public:
+ explicit QQuickSplitViewAttached(QObject *parent = nullptr);
+
+ QQuickSplitView *view() const;
+
+ qreal minimumWidth() const;
+ void setMinimumWidth(qreal width);
+ void resetMinimumWidth();
+
+ qreal minimumHeight() const;
+ void setMinimumHeight(qreal height);
+ void resetMinimumHeight();
+
+ qreal preferredWidth() const;
+ void setPreferredWidth(qreal width);
+ void resetPreferredWidth();
+
+ qreal preferredHeight() const;
+ void setPreferredHeight(qreal height);
+ void resetPreferredHeight();
+
+ qreal maximumWidth() const;
+ void setMaximumWidth(qreal width);
+ void resetMaximumWidth();
+
+ qreal maximumHeight() const;
+ void setMaximumHeight(qreal height);
+ void resetMaximumHeight();
+
+ bool fillWidth() const;
+ void setFillWidth(bool fill);
+
+ bool fillHeight() const;
+ void setFillHeight(bool fill);
+
+Q_SIGNALS:
+ void viewChanged();
+ void minimumWidthChanged();
+ void minimumHeightChanged();
+ void preferredWidthChanged();
+ void preferredHeightChanged();
+ void maximumWidthChanged();
+ void maximumHeightChanged();
+ void fillWidthChanged();
+ void fillHeightChanged();
+
+private:
+ Q_DISABLE_COPY(QQuickSplitViewAttached)
+ Q_DECLARE_PRIVATE(QQuickSplitViewAttached)
+};
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitHandleAttached : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL)
+ Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL)
+
+public:
+ explicit QQuickSplitHandleAttached(QObject *parent = nullptr);
+
+ bool isHovered() const;
+ bool isPressed() const;
+
+ static QQuickSplitHandleAttached *qmlAttachedProperties(QObject *object);
+
+Q_SIGNALS:
+ void hoveredChanged();
+ void pressedChanged();
+
+private:
+ Q_DISABLE_COPY(QQuickSplitHandleAttached)
+ Q_DECLARE_PRIVATE(QQuickSplitHandleAttached)
+};
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QQuickSplitView)
+QML_DECLARE_TYPEINFO(QQuickSplitView, QML_HAS_ATTACHED_PROPERTIES)
+
+QML_DECLARE_TYPE(QQuickSplitHandleAttached)
+QML_DECLARE_TYPEINFO(QQuickSplitHandleAttached, QML_HAS_ATTACHED_PROPERTIES)
+
+#endif // QQUICKSPLITVIEW_P_H
diff --git a/src/quicktemplates2/qquicksplitview_p_p.h b/src/quicktemplates2/qquicksplitview_p_p.h
new file mode 100644
index 00000000..5d71d461
--- /dev/null
+++ b/src/quicktemplates2/qquicksplitview_p_p.h
@@ -0,0 +1,178 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKSPLITVIEW_P_P_H
+#define QQUICKSPLITVIEW_P_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtQuickTemplates2/private/qquickcontainer_p_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickSplitView;
+class QQuickSplitViewAttached;
+class QQuickSplitHandleAttached;
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitViewPrivate : public QQuickContainerPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickSplitView)
+
+public:
+ void updateFillIndex();
+ void layoutResizeSplitItems(qreal &usedWidth, qreal &usedHeight, int &indexBeingResizedDueToDrag);
+ void layoutResizeFillItem(QQuickItem *fillItem, qreal &usedWidth, qreal &usedHeight, int indexBeingResizedDueToDrag);
+ void layoutPositionItems(const QQuickItem *fillItem);
+ void requestLayout();
+ void layout();
+ void createHandles();
+ void createHandleItem(int index);
+ void removeExcessHandles();
+ void destroyHandles();
+ void resizeHandle(QQuickItem *handleItem);
+ void resizeHandles();
+ void updateHandleVisibilities();
+ void setResizing(bool resizing);
+
+ bool isHorizontal() const;
+ qreal accumulatedSize(int firstIndex, int lastIndex) const;
+
+ struct EffectiveSizeData {
+ qreal effectiveMinimumWidth;
+ qreal effectiveMinimumHeight;
+ qreal effectivePreferredWidth;
+ qreal effectivePreferredHeight;
+ qreal effectiveMaximumWidth;
+ qreal effectiveMaximumHeight;
+ };
+
+ EffectiveSizeData effectiveSizeData(const QQuickItemPrivate *itemPrivate,
+ const QQuickSplitViewAttached *attached) const;
+
+ int handleIndexForSplitIndex(int splitIndex) const;
+
+ QQuickItem *getContentItem() override;
+ void handlePress(const QPointF &point) override;
+ void handleMove(const QPointF &point) override;
+ void handleRelease(const QPointF &point) override;
+
+ void itemVisibilityChanged(QQuickItem *item) override;
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
+
+ void updatePolish() override;
+
+ static QQuickSplitViewPrivate *get(QQuickSplitView *splitView);
+
+ Qt::Orientation m_orientation = Qt::Horizontal;
+ QQmlComponent *m_handle = nullptr;
+ QVector<QQuickItem*> m_handleItems;
+ int m_hoveredHandleIndex = -1;
+ int m_pressedHandleIndex = -1;
+ QPointF m_pressPos;
+ QPointF m_mousePos;
+ QPointF m_handlePosBeforePress;
+ qreal m_leftOrTopItemSizeBeforePress = 0.0;
+ qreal m_rightOrBottomItemSizeBeforePress = 0.0;
+ int m_fillIndex = -1;
+ bool m_layingOut = false;
+ bool m_ignoreNextLayoutRequest = false;
+ bool m_resizing = false;
+};
+
+class QQuickSplitViewAttachedPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickSplitViewAttached)
+
+public:
+ QQuickSplitViewAttachedPrivate();
+
+ void setView(QQuickSplitView *newView);
+ void requestLayoutView();
+
+ static QQuickSplitViewAttachedPrivate *get(QQuickSplitViewAttached *attached);
+ static const QQuickSplitViewAttachedPrivate *get(const QQuickSplitViewAttached *attached);
+
+ QQuickItem *m_splitItem = nullptr;
+ QQuickSplitView *m_splitView = nullptr;
+
+ unsigned m_fillWidth : 1;
+ unsigned m_fillHeight : 1;
+ unsigned m_isFillWidthSet : 1;
+ unsigned m_isFillHeightSet : 1;
+ unsigned m_isMinimumWidthSet : 1;
+ unsigned m_isMinimumHeightSet : 1;
+ unsigned m_isPreferredWidthSet : 1;
+ unsigned m_isPreferredHeightSet : 1;
+ unsigned m_isMaximumWidthSet : 1;
+ unsigned m_isMaximumHeightSet : 1;
+ qreal m_minimumWidth;
+ qreal m_minimumHeight;
+ qreal m_preferredWidth;
+ qreal m_preferredHeight;
+ qreal m_maximumWidth;
+ qreal m_maximumHeight;
+};
+
+class QQuickSplitHandleAttachedPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickSplitHandleAttached)
+
+public:
+ QQuickSplitHandleAttachedPrivate();
+
+ void setHovered(bool hovered);
+ void setPressed(bool pressed);
+
+ static QQuickSplitHandleAttachedPrivate *get(QQuickSplitHandleAttached *attached);
+ static const QQuickSplitHandleAttachedPrivate *get(const QQuickSplitHandleAttached *attached);
+
+ unsigned m_hovered : 1;
+ unsigned m_pressed : 1;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKSPLITVIEW_P_P_H
diff --git a/src/quicktemplates2/qquickstackview.cpp b/src/quicktemplates2/qquickstackview.cpp
index 18f65127..b2a95731 100644
--- a/src/quicktemplates2/qquickstackview.cpp
+++ b/src/quicktemplates2/qquickstackview.cpp
@@ -373,7 +373,7 @@ QT_BEGIN_NAMESPACE
\endlist
\sa {Customizing StackView}, {Navigation Controls}, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
QQuickStackView::QQuickStackView(QQuickItem *parent)
diff --git a/src/quicktemplates2/qquickswipeview.cpp b/src/quicktemplates2/qquickswipeview.cpp
index e6a88b47..3ba4f4d3 100644
--- a/src/quicktemplates2/qquickswipeview.cpp
+++ b/src/quicktemplates2/qquickswipeview.cpp
@@ -100,7 +100,7 @@ QT_BEGIN_NAMESPACE
or using anchors for its children works as expected.
\sa TabBar, PageIndicator, {Customizing SwipeView}, {Navigation Controls}, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
class QQuickSwipeViewPrivate : public QQuickContainerPrivate
diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp
index 745023c3..5a439b4b 100644
--- a/src/quicktemplates2/qquicktabbar.cpp
+++ b/src/quicktemplates2/qquicktabbar.cpp
@@ -92,7 +92,7 @@ QT_BEGIN_NAMESPACE
\snippet qtquickcontrols2-tabbar-flickable.qml 1
\sa TabButton, {Customizing TabBar}, {Navigation Controls}, {Container Controls},
- {Focus Management in Qt Quick Controls 2}
+ {Focus Management in Qt Quick Controls}
*/
class QQuickTabBarPrivate : public QQuickContainerPrivate
diff --git a/src/quicktemplates2/qquicktoolbutton.cpp b/src/quicktemplates2/qquicktoolbutton.cpp
index eb70fbc4..b613e69b 100644
--- a/src/quicktemplates2/qquicktoolbutton.cpp
+++ b/src/quicktemplates2/qquicktoolbutton.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
\snippet qtquickcontrols2-toolbar.qml 1
ToolButton inherits its API from AbstractButton. For instance, you can set
- \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls 2}{icon},
+ \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon},
and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API.
\sa ToolBar, {Customizing ToolButton}, {Button Controls}
diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp
index 25710231..8b702c60 100644
--- a/src/quicktemplates2/qquicktumbler.cpp
+++ b/src/quicktemplates2/qquicktumbler.cpp
@@ -36,6 +36,7 @@
#include "qquicktumbler_p.h"
+#include <QtCore/qloggingcategory.h>
#include <QtGui/qpa/qplatformtheme.h>
#include <QtQml/qqmlinfo.h>
#include <QtQuick/private/qquickflickable_p.h>
@@ -44,6 +45,8 @@
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcTumbler, "qt.quick.controls.tumbler")
+
/*!
\qmltype Tumbler
\inherits Control
@@ -190,11 +193,22 @@ void QQuickTumblerPrivate::_q_onViewCurrentIndexChanged()
// If the user set currentIndex in the onModelChanged handler,
// we have to respect that currentIndex by ignoring changes in the view
// until the model has finished being set.
+ qCDebug(lcTumbler).nospace() << "view currentIndex changed to "
+ << (view ? view->property("currentIndex").toString() : QStringLiteral("unknown index (no view)"))
+ << ", but we're ignoring it because one or more of the following conditions are true:"
+ << "\n- !view: " << !view
+ << "\n- ignoreCurrentIndexChanges: " << ignoreCurrentIndexChanges
+ << "\n- currentIndexSetDuringModelChange: " << currentIndexSetDuringModelChange;
return;
}
const int oldCurrentIndex = currentIndex;
currentIndex = view->property("currentIndex").toInt();
+
+ qCDebug(lcTumbler).nospace() << "view currentIndex changed to "
+ << (view ? view->property("currentIndex").toString() : QStringLiteral("unknown index (no view)"))
+ << ", our old currentIndex was " << oldCurrentIndex;
+
if (oldCurrentIndex != currentIndex)
emit q->currentIndexChanged();
}
@@ -202,6 +216,7 @@ void QQuickTumblerPrivate::_q_onViewCurrentIndexChanged()
void QQuickTumblerPrivate::_q_onViewCountChanged()
{
Q_Q(QQuickTumbler);
+ qCDebug(lcTumbler) << "view count changed - ignoring signals?" << ignoreSignals;
if (ignoreSignals)
return;
@@ -513,10 +528,12 @@ void QQuickTumbler::geometryChanged(const QRectF &newGeometry, const QRectF &old
void QQuickTumbler::componentComplete()
{
Q_D(QQuickTumbler);
+ qCDebug(lcTumbler) << "componentComplete()";
QQuickControl::componentComplete();
if (!d->view) {
// Force the view to be created.
+ qCDebug(lcTumbler) << "emitting wrapChanged() to force view to be created";
emit wrapChanged();
// Determine the type of view for attached properties, etc.
d->setupViewData(d->contentItem);
@@ -532,6 +549,8 @@ void QQuickTumbler::componentComplete()
d->_q_updateItemHeights();
d->_q_updateItemWidths();
d->_q_onViewCountChanged();
+
+ qCDebug(lcTumbler) << "componentComplete() is done";
}
void QQuickTumbler::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
@@ -659,18 +678,29 @@ void QQuickTumblerPrivate::syncCurrentIndex()
void QQuickTumblerPrivate::setPendingCurrentIndex(int index)
{
+ qCDebug(lcTumbler) << "setting pendingCurrentIndex to" << index;
pendingCurrentIndex = index;
}
+QString QQuickTumblerPrivate::propertyChangeReasonToString(
+ QQuickTumblerPrivate::PropertyChangeReason changeReason)
+{
+ return changeReason == UserChange ? QStringLiteral("UserChange") : QStringLiteral("InternalChange");
+}
+
void QQuickTumblerPrivate::setCurrentIndex(int newCurrentIndex,
QQuickTumblerPrivate::PropertyChangeReason changeReason)
{
Q_Q(QQuickTumbler);
+ qCDebug(lcTumbler).nospace() << "setting currentIndex to " << newCurrentIndex
+ << ", old currentIndex was " << currentIndex
+ << ", changeReason is " << propertyChangeReasonToString(changeReason);
if (newCurrentIndex == currentIndex || newCurrentIndex < -1)
return;
if (!q->isComponentComplete()) {
// Views can't set currentIndex until they're ready.
+ qCDebug(lcTumbler) << "we're not complete; setting pendingCurrentIndex instead";
setPendingCurrentIndex(newCurrentIndex);
return;
}
@@ -680,6 +710,7 @@ void QQuickTumblerPrivate::setCurrentIndex(int newCurrentIndex,
// the model is in the process of being set and the user has set
// the currentIndex in onModelChanged. We have to queue the currentIndex
// change until we're ready.
+ qCDebug(lcTumbler) << "a model is being set; setting pendingCurrentIndex instead";
setPendingCurrentIndex(newCurrentIndex);
return;
}
@@ -717,11 +748,16 @@ void QQuickTumblerPrivate::setCurrentIndex(int newCurrentIndex,
currentIndex = newCurrentIndex;
emit q->currentIndexChanged();
}
+
+ qCDebug(lcTumbler) << "view's currentIndex is now" << view->property("currentIndex").toInt()
+ << "and ours is" << currentIndex;
}
}
void QQuickTumblerPrivate::setCount(int newCount)
{
+ qCDebug(lcTumbler).nospace() << "setting count to " << newCount
+ << ", old count was " << count;
if (newCount == count)
return;
@@ -743,6 +779,7 @@ void QQuickTumblerPrivate::setWrapBasedOnCount()
void QQuickTumblerPrivate::setWrap(bool shouldWrap, bool isExplicit)
{
+ qCDebug(lcTumbler) << "setting wrap to" << shouldWrap << "- exlicit?" << isExplicit;
if (isExplicit)
explicitWrap = true;
diff --git a/src/quicktemplates2/qquicktumbler_p_p.h b/src/quicktemplates2/qquicktumbler_p_p.h
index 75c6cd1b..049ab8a1 100644
--- a/src/quicktemplates2/qquicktumbler_p_p.h
+++ b/src/quicktemplates2/qquicktumbler_p_p.h
@@ -111,6 +111,8 @@ public:
InternalChange
};
+ static QString propertyChangeReasonToString(PropertyChangeReason changeReason);
+
void setCurrentIndex(int newCurrentIndex, PropertyChangeReason changeReason = InternalChange);
void setCount(int newCount);
void setWrapBasedOnCount();
diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri
index 33bc47ca..c145c20f 100644
--- a/src/quicktemplates2/quicktemplates2.pri
+++ b/src/quicktemplates2/quicktemplates2.pri
@@ -73,6 +73,7 @@ HEADERS += \
$$PWD/qquickshortcutcontext_p_p.h \
$$PWD/qquickslider_p.h \
$$PWD/qquickspinbox_p.h \
+ $$PWD/qquicksplitview_p.h \
$$PWD/qquickstackelement_p_p.h \
$$PWD/qquickstacktransition_p_p.h \
$$PWD/qquickstackview_p.h \
@@ -149,6 +150,7 @@ SOURCES += \
$$PWD/qquickshortcutcontext.cpp \
$$PWD/qquickslider.cpp \
$$PWD/qquickspinbox.cpp \
+ $$PWD/qquicksplitview.cpp \
$$PWD/qquickstackelement.cpp \
$$PWD/qquickstacktransition.cpp \
$$PWD/qquickstackview.cpp \