Merge remote-tracking branch 'origin/5.8' into dev
Conflicts: .qmake.conf examples/quickcontrols2/quickcontrols2.pro Change-Id: If2f5e40487ba6515ba322f92380573727bdd6bc0
This commit is contained in:
commit
463e462455
|
@ -12,6 +12,7 @@
|
|||
/examples/quickcontrols2/chattutorial/chapter4-models/chapter4-models
|
||||
/examples/quickcontrols2/chattutorial/chapter5-styling/chapter5-styling
|
||||
/examples/quickcontrols2/contactlist/contactlist
|
||||
/examples/quickcontrols2/flatstyle/flatstyle
|
||||
/examples/quickcontrols2/gallery/gallery
|
||||
/examples/quickcontrols2/sidepanel/sidepanel
|
||||
/examples/quickcontrols2/swipetoremove/swipetoremove
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick.Templates 2.1 as T
|
||||
import Theme 1.0
|
||||
|
||||
T.Button {
|
||||
id: control
|
||||
|
||||
font: Theme.font
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
contentItem.implicitHeight + topPadding + bottomPadding)
|
||||
leftPadding: 4
|
||||
rightPadding: 4
|
||||
|
||||
background: Rectangle {
|
||||
id: buttonBackground
|
||||
implicitWidth: 100
|
||||
implicitHeight: 40
|
||||
opacity: enabled ? 1 : 0.3
|
||||
border.color: Theme.mainColor
|
||||
border.width: 1
|
||||
radius: 2
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "normal"
|
||||
when: !control.down
|
||||
PropertyChanges {
|
||||
target: buttonBackground
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "down"
|
||||
when: control.down
|
||||
PropertyChanges {
|
||||
target: buttonBackground
|
||||
border.color: Theme.mainColorDarker
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
contentItem: Text {
|
||||
id: textItem
|
||||
text: control.text
|
||||
|
||||
font: control.font
|
||||
opacity: enabled ? 1.0 : 0.3
|
||||
color: Theme.mainColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "normal"
|
||||
when: !control.down
|
||||
},
|
||||
State {
|
||||
name: "down"
|
||||
when: control.down
|
||||
PropertyChanges {
|
||||
target: textItem
|
||||
color: Theme.mainColorDarker
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick.Templates 2.1 as T
|
||||
import Theme 1.0
|
||||
|
||||
T.CheckBox {
|
||||
id: control
|
||||
|
||||
font: Theme.font
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(contentItem.implicitHeight,
|
||||
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
leftPadding: 4
|
||||
indicator: Rectangle {
|
||||
id: checkboxHandle
|
||||
implicitWidth: Theme.baseSize * 2.6
|
||||
implicitHeight: Theme.baseSize * 2.6
|
||||
x: control.leftPadding
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
radius: 2
|
||||
border.color: Theme.mainColor
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
width: Theme.baseSize * 1.4
|
||||
height: Theme.baseSize * 1.4
|
||||
x: Theme.baseSize * 0.6
|
||||
y: Theme.baseSize * 0.6
|
||||
radius: Theme.baseSize * 0.4
|
||||
visible: false
|
||||
color: Theme.mainColor
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "unchecked"
|
||||
when: !control.checked && !control.down
|
||||
},
|
||||
State {
|
||||
name: "checked"
|
||||
when: control.checked && !control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
visible: true
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "unchecked_down"
|
||||
when: !control.checked && control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
color: Theme.mainColorDarker
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: checkboxHandle
|
||||
border.color: Theme.mainColorDarker
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "checked_down"
|
||||
extend: "unchecked_down"
|
||||
when: control.checked && control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
visible: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
implicitWidth: 140
|
||||
implicitHeight: Theme.baseSize * 3.8
|
||||
color: Theme.lightGray
|
||||
border.color: Theme.gray
|
||||
}
|
||||
|
||||
contentItem: Text {
|
||||
leftPadding: control.indicator.width + 4
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
color: Theme.dark
|
||||
elide: Text.ElideRight
|
||||
visible: control.text
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick.Templates 2.1 as T
|
||||
import Theme 1.0
|
||||
|
||||
T.Switch {
|
||||
id: control
|
||||
|
||||
implicitWidth: indicator.implicitWidth
|
||||
implicitHeight: background.implicitHeight
|
||||
|
||||
background: Rectangle {
|
||||
implicitWidth: 140
|
||||
implicitHeight: Theme.baseSize * 3.8
|
||||
color: Theme.lightGray
|
||||
border.color: Theme.gray
|
||||
}
|
||||
|
||||
leftPadding: 4
|
||||
|
||||
indicator: Rectangle {
|
||||
id: switchHandle
|
||||
implicitWidth: Theme.baseSize * 4.8
|
||||
implicitHeight: Theme.baseSize * 2.6
|
||||
x: control.leftPadding
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
radius: Theme.baseSize * 1.3
|
||||
color: Theme.light
|
||||
border.color: Theme.lightGray
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
|
||||
width: Theme.baseSize * 2.6
|
||||
height: Theme.baseSize * 2.6
|
||||
radius: Theme.baseSize * 1.3
|
||||
color: Theme.light
|
||||
border.color: Theme.gray
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "off"
|
||||
when: !control.checked && !control.down
|
||||
},
|
||||
State {
|
||||
name: "on"
|
||||
when: control.checked && !control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: switchHandle
|
||||
color: Theme.mainColor
|
||||
border.color: Theme.mainColor
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
x: parent.width - width
|
||||
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "off_down"
|
||||
when: !control.checked && control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
color: Theme.light
|
||||
}
|
||||
|
||||
},
|
||||
State {
|
||||
name: "on_down"
|
||||
extend: "off_down"
|
||||
when: control.checked && control.down
|
||||
|
||||
PropertyChanges {
|
||||
target: rectangle
|
||||
x: parent.width - width
|
||||
color: Theme.light
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: switchHandle
|
||||
color: Theme.mainColorDarker
|
||||
border.color: Theme.mainColorDarker
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,146 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick.Controls 2.1
|
||||
import QtQuick.Layouts 1.0
|
||||
import Theme 1.0
|
||||
|
||||
Item {
|
||||
id: form
|
||||
|
||||
width: 320
|
||||
height: 480
|
||||
property alias slider: slider
|
||||
property alias checkBoxUnderline: checkBoxUnderline
|
||||
property alias checkBoxBold: checkBoxBold
|
||||
property alias sizeSwitch: sizeSwitch
|
||||
property alias button: button
|
||||
|
||||
Slider {
|
||||
id: slider
|
||||
width: 297
|
||||
height: 38
|
||||
stepSize: 1
|
||||
to: 18
|
||||
from: 10
|
||||
value: 14
|
||||
anchors.topMargin: Theme.baseSize
|
||||
anchors.top: gridLayout.bottom
|
||||
anchors.right: gridLayout.right
|
||||
anchors.left: gridLayout.left
|
||||
handle: Rectangle {
|
||||
id: sliderHandle
|
||||
x: slider.leftPadding + slider.visualPosition * (slider.availableWidth - width)
|
||||
y: slider.topPadding + slider.availableHeight / 2 - height / 2
|
||||
implicitWidth: 26
|
||||
implicitHeight: 26
|
||||
radius: 13
|
||||
color: slider.pressed ? Theme.mainColorDarker : Theme.mainColor
|
||||
border.color: Theme.gray
|
||||
}
|
||||
}
|
||||
|
||||
GridLayout {
|
||||
id: gridLayout
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 64
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
columnSpacing: Theme.baseSize * 0.5
|
||||
rowSpacing: Theme.baseSize * 0.5
|
||||
rows: 4
|
||||
columns: 2
|
||||
|
||||
Label {
|
||||
text: qsTr("Toggle Size")
|
||||
font: Theme.font
|
||||
}
|
||||
|
||||
Switch {
|
||||
id: sizeSwitch
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: checkBoxBold
|
||||
text: qsTr("Bold")
|
||||
checked: true
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: checkBoxUnderline
|
||||
text: qsTr("Underline")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
color: Theme.mainColor
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
Layout.preferredHeight: 38
|
||||
Layout.preferredWidth: 297
|
||||
}
|
||||
|
||||
Label {
|
||||
id: label
|
||||
text: qsTr("Customization")
|
||||
font: Theme.font
|
||||
}
|
||||
|
||||
Button {
|
||||
id: button
|
||||
text: qsTr("Change Color")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,93 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:FDL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: http://www.gnu.org/copyleft/fdl.html.
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\example flatstyle
|
||||
\title Qt Quick Controls 2 - Flat Style
|
||||
\ingroup qtquickcontrols2-examples
|
||||
\brief A QML app using Qt Quick Controls 2 and a QML plugin
|
||||
with customized controls.
|
||||
|
||||
\e Flat Style shows how to integrate customized controls into Qt Quick Designer.
|
||||
The example uses a pure QML plugin to define constants in a singleton. For the
|
||||
declarative parts of the UI, \c .ui.qml files are used. These can be edited
|
||||
visually in Qt Quick Designer.
|
||||
|
||||
\borderedimage qtquickcontrols2-flatstyle.png
|
||||
|
||||
\section1 QML Plugin
|
||||
|
||||
The example contains a plugin called Theme. The plugin consists of a QML file
|
||||
\c Theme.qml and a \c qmldir file. The plugin is located in the imports subdirectory
|
||||
and added as a resource.
|
||||
To ensure the plugin is found by QML, we add the import directory to the import
|
||||
paths of the engine in \c main.cpp.
|
||||
|
||||
\code
|
||||
...
|
||||
engine.addImportPath(":/imports");
|
||||
...
|
||||
\endcode
|
||||
|
||||
To ensure the code model and Qt Quick Designer can find the plugin, we add the following
|
||||
line to \e flatstyle.pro.
|
||||
|
||||
\code
|
||||
QML_IMPORT_PATH = $$PWD/imports
|
||||
\endcode
|
||||
|
||||
All colors, font parameters, and size constants that are used in this example
|
||||
are defined as properties in the singleton called \e Theme.qml.
|
||||
Usually such attribute values are defined as constants as they are not suppose to change at run time.
|
||||
In this example, we allow the user to change some attributes like the main color, the size parameter,
|
||||
and some font parameters while the application is running.
|
||||
|
||||
Defining these attribute values in a singleton makes it easy to maintain and change them.
|
||||
This pattern makes it easy to implement theming.
|
||||
|
||||
\section1 Implementing Custom Controls
|
||||
|
||||
The plugin also contains a style for a couple of controls that implement a custom look and feel.
|
||||
This style is located in \c Flat and is set as the style for the application in \c qtquickcontrols2.conf.
|
||||
|
||||
The example uses the states of a Qt Quick Item to implement the different states of a control.
|
||||
This has the advantage that we can define the custom look in Qt Quick Designer and we can easily
|
||||
verify the different states of a control.
|
||||
To edit the indicator of a switch in Qt Quick Designer we can open Switch.qml and then enter the implementation
|
||||
of the indicator called \c switchHandle using the combo box on the top next to the combo box for the open documents.
|
||||
|
||||
\borderedimage qtquickcontrols2-flatstyle-creator.png
|
||||
|
||||
The application itself is just a simple form that allows the user to adjust a couple of parameters of the custom controls.
|
||||
The user can choose another main color, set the font to bold or underline, and increase the size of the controls by
|
||||
toggling a switch.
|
||||
|
||||
\e MainForm.ui.qml is just the pure declarative definition of the form, while \e flatstyle.qml instantiates the form
|
||||
and implements the logic.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
|
@ -0,0 +1,18 @@
|
|||
TEMPLATE = app
|
||||
TARGET = flatstyle
|
||||
|
||||
QT += quick quickcontrols2 widgets
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
RESOURCES += \
|
||||
qtquickcontrols2.conf \
|
||||
$$files(*.qml) \
|
||||
$$files(imports/Theme/*) \
|
||||
$$files(Flat/*.qml)
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH = $$PWD/imports
|
||||
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/quickcontrols2/flatstyle
|
||||
INSTALLS += target
|
|
@ -0,0 +1,80 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.8
|
||||
import QtQuick.Controls 2.1
|
||||
import Qt.labs.platform 1.0
|
||||
import Theme 1.0
|
||||
|
||||
ApplicationWindow {
|
||||
id: window
|
||||
visible: true
|
||||
minimumWidth: 360
|
||||
height: 480
|
||||
|
||||
title: qsTr("Flat Style")
|
||||
|
||||
MainForm {
|
||||
id: form
|
||||
|
||||
anchors.fill: parent
|
||||
button.onClicked: colorDialog.open()
|
||||
|
||||
sizeSwitch.onCheckedChanged: Theme.baseSize = (sizeSwitch.checked ? Theme.largeSize : Theme.smallSize)
|
||||
checkBoxBold.onCheckedChanged: Theme.font.bold = checkBoxBold.checked
|
||||
checkBoxUnderline.onCheckedChanged: Theme.font.underline = checkBoxUnderline.checked
|
||||
slider.onPositionChanged: Theme.font.pixelSize = slider.valueAt(slider.position)
|
||||
}
|
||||
|
||||
ColorDialog {
|
||||
id: colorDialog
|
||||
onCurrentColorChanged: Theme.mainColor = currentColor
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
pragma Singleton
|
||||
|
||||
import QtQuick 2.8
|
||||
|
||||
QtObject {
|
||||
readonly property color gray: "#b2b1b1"
|
||||
readonly property color lightGray: "#dddddd"
|
||||
readonly property color light: "#ffffff"
|
||||
readonly property color blue: "#2d548b"
|
||||
property color mainColor: "#17a81a"
|
||||
readonly property color dark: "#222222"
|
||||
readonly property color mainColorDarker: Qt.darker(mainColor, 1.5)
|
||||
|
||||
property int baseSize: 10
|
||||
|
||||
readonly property int smallSize: 10
|
||||
readonly property int largeSize: 16
|
||||
|
||||
property font font
|
||||
font.bold: true
|
||||
font.underline: false
|
||||
font.pixelSize: 14
|
||||
font.family: "arial"
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
module Theme
|
||||
singleton Theme 1.0 Theme.qml
|
|
@ -0,0 +1,64 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QQmlApplicationEngine>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
engine.addImportPath(":/imports");
|
||||
engine.load(QUrl(QStringLiteral("qrc:/flatstyle.qml")));
|
||||
|
||||
return app.exec();
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
[Controls]
|
||||
Style=Flat
|
|
@ -5,4 +5,5 @@ SUBDIRS += \
|
|||
texteditor \
|
||||
contactlist \
|
||||
sidepanel \
|
||||
swipetoremove
|
||||
swipetoremove \
|
||||
flatstyle
|
||||
|
|
|
@ -2,6 +2,7 @@ QMAKE_DOCS = $$PWD/qtquickcontrols2.qdocconf
|
|||
|
||||
OTHER_FILES += \
|
||||
$$files($$PWD/snippets/*.qml) \
|
||||
$$files($$PWD/snippets/screenshots/*.qml) \
|
||||
$$files($$PWD/src/*.qdoc) \
|
||||
$$files($$PWD/src/calendar/*.qdoc) \
|
||||
$$files($$PWD/src/templates/*.qdoc)
|
||||
|
|
|
@ -754,7 +754,7 @@ void QQuickDial::wheelEvent(QWheelEvent *event)
|
|||
if (d->wheelEnabled) {
|
||||
const qreal oldValue = d->value;
|
||||
const QPointF angle = event->angleDelta();
|
||||
const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : angle.y()) / QWheelEvent::DefaultDeltasPerStep;
|
||||
const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : (event->inverted() ? -angle.y() : angle.y())) / QWheelEvent::DefaultDeltasPerStep;
|
||||
const qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize;
|
||||
setValue(oldValue + step * delta);
|
||||
event->setAccepted(!qFuzzyCompare(d->value, oldValue));
|
||||
|
|
|
@ -461,8 +461,13 @@ void QQuickMenu::componentComplete()
|
|||
void QQuickMenu::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
|
||||
{
|
||||
Q_D(QQuickMenu);
|
||||
Q_UNUSED(oldItem);
|
||||
QQuickPopup::contentItemChange(newItem, oldItem);
|
||||
|
||||
if (oldItem)
|
||||
QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Children);
|
||||
if (newItem)
|
||||
QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children);
|
||||
|
||||
d->contentItem = newItem;
|
||||
}
|
||||
|
||||
|
|
|
@ -710,7 +710,7 @@ void QQuickSlider::wheelEvent(QWheelEvent *event)
|
|||
if (d->wheelEnabled) {
|
||||
const qreal oldValue = d->value;
|
||||
const QPointF angle = event->angleDelta();
|
||||
const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : angle.y()) / QWheelEvent::DefaultDeltasPerStep;
|
||||
const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : (event->inverted() ? -angle.y() : angle.y())) / QWheelEvent::DefaultDeltasPerStep;
|
||||
const qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize;
|
||||
setValue(oldValue + step * delta);
|
||||
const bool wasMoved = !qFuzzyCompare(d->value, oldValue);
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** You may use this file under the terms of the BSD license as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import QtQuick.Controls 2.1
|
||||
|
||||
ApplicationWindow {
|
||||
width: 200
|
||||
height: 200
|
||||
|
||||
property alias menu: menu
|
||||
|
||||
Component {
|
||||
id: menuItem
|
||||
MenuItem { }
|
||||
}
|
||||
|
||||
Menu {
|
||||
id: menu
|
||||
property alias repeater: repeater
|
||||
MenuItem { text: "static_1" }
|
||||
Repeater {
|
||||
id: repeater
|
||||
model: 2
|
||||
MenuItem { text: "repeated_" + (index + 2) }
|
||||
}
|
||||
MenuItem { text: "static_4" }
|
||||
Component.onCompleted: {
|
||||
addItem(menuItem.createObject(menu.contentItem, {text: "dynamic_5"}))
|
||||
addItem(menuItem.createObject(menu.contentItem, {text: "dynamic_6"}))
|
||||
insertItem(0, menuItem.createObject(menu.contentItem, {text: "dynamic_0"}))
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** You may use this file under the terms of the BSD license as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import QtQuick.Controls 2.1
|
||||
|
||||
ApplicationWindow {
|
||||
width: 200
|
||||
height: 200
|
||||
|
||||
property alias menu: menu
|
||||
property alias repeater: repeater
|
||||
|
||||
Menu {
|
||||
id: menu
|
||||
Repeater {
|
||||
id: repeater
|
||||
model: 5
|
||||
MenuItem { property int idx: index }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -67,6 +67,8 @@ private slots:
|
|||
void menuButton();
|
||||
void addItem();
|
||||
void menuSeparator();
|
||||
void repeater();
|
||||
void order();
|
||||
};
|
||||
|
||||
void tst_menu::defaults()
|
||||
|
@ -317,6 +319,71 @@ void tst_menu::menuSeparator()
|
|||
QTRY_VERIFY(!menu->isVisible());
|
||||
}
|
||||
|
||||
void tst_menu::repeater()
|
||||
{
|
||||
QQuickApplicationHelper helper(this, QLatin1String("repeater.qml"));
|
||||
QQuickWindow *window = helper.window;
|
||||
window->show();
|
||||
QVERIFY(QTest::qWaitForWindowActive(window));
|
||||
|
||||
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
|
||||
QVERIFY(menu);
|
||||
menu->open();
|
||||
QVERIFY(menu->isVisible());
|
||||
|
||||
QObject *repeater = window->property("repeater").value<QObject*>();
|
||||
QVERIFY(repeater);
|
||||
|
||||
int count = repeater->property("count").toInt();
|
||||
QCOMPARE(count, 5);
|
||||
|
||||
for (int i = 0; i < count; ++i) {
|
||||
QQuickItem *item = menu->itemAt(i);
|
||||
QVERIFY(item);
|
||||
QCOMPARE(item->property("idx").toInt(), i);
|
||||
|
||||
QQuickItem *repeaterItem = nullptr;
|
||||
QVERIFY(QMetaObject::invokeMethod(repeater, "itemAt", Q_RETURN_ARG(QQuickItem*, repeaterItem), Q_ARG(int, i)));
|
||||
QCOMPARE(item, repeaterItem);
|
||||
}
|
||||
|
||||
repeater->setProperty("model", 3);
|
||||
|
||||
count = repeater->property("count").toInt();
|
||||
QCOMPARE(count, 3);
|
||||
|
||||
for (int i = 0; i < count; ++i) {
|
||||
QQuickItem *item = menu->itemAt(i);
|
||||
QVERIFY(item);
|
||||
QCOMPARE(item->property("idx").toInt(), i);
|
||||
|
||||
QQuickItem *repeaterItem = nullptr;
|
||||
QVERIFY(QMetaObject::invokeMethod(repeater, "itemAt", Q_RETURN_ARG(QQuickItem*, repeaterItem), Q_ARG(int, i)));
|
||||
QCOMPARE(item, repeaterItem);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_menu::order()
|
||||
{
|
||||
QQuickApplicationHelper helper(this, QLatin1String("order.qml"));
|
||||
QQuickWindow *window = helper.window;
|
||||
window->show();
|
||||
QVERIFY(QTest::qWaitForWindowActive(window));
|
||||
|
||||
QQuickMenu *menu = window->property("menu").value<QQuickMenu*>();
|
||||
QVERIFY(menu);
|
||||
menu->open();
|
||||
QVERIFY(menu->isVisible());
|
||||
|
||||
const QStringList texts = {"dynamic_0", "static_1", "repeated_2", "repeated_3", "static_4", "dynamic_5", "dynamic_6"};
|
||||
|
||||
for (int i = 0; i < texts.count(); ++i) {
|
||||
QQuickItem *item = menu->itemAt(i);
|
||||
QVERIFY(item);
|
||||
QCOMPARE(item->property("text").toString(), texts.at(i));
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_menu)
|
||||
|
||||
#include "tst_menu.moc"
|
||||
|
|
Loading…
Reference in New Issue