diff options
author | Jens Bache-Wiig <jens.bache-wiig@digia.com> | 2013-08-16 13:20:11 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-17 17:18:02 +0200 |
commit | 4c184095d378622fb0c3bb1692b331b3cc04e010 (patch) | |
tree | fe097a46b7e451f240a1033fbb37a7b0aace9ca6 /tests/manual | |
parent | 9cde5d427a1fc1c2d36b853e1261d08f8dbfa126 (diff) | |
download | qtquickcontrols-4c184095d378622fb0c3bb1692b331b3cc04e010.tar.gz |
Make ComboBox editable
In addition
- Added text completion
- Added validator
- Added accepted signal
- Added activated signal
- Added textAt function
- Added find function
- Added keyboard indexing for non-editable as well
Note that we do not support adding values to the model,
but leave this up to the user to handle in onAccepted.
Change-Id: I1d76fa83aea0e488959c418d22ce7b6027675d86
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/manual')
-rw-r--r-- | tests/manual/combobox/combobox.pro | 10 | ||||
-rw-r--r-- | tests/manual/combobox/main.cpp | 79 | ||||
-rw-r--r-- | tests/manual/combobox/main.qml | 132 | ||||
-rw-r--r-- | tests/manual/testbench/main.qml | 2 |
4 files changed, 223 insertions, 0 deletions
diff --git a/tests/manual/combobox/combobox.pro b/tests/manual/combobox/combobox.pro new file mode 100644 index 00000000..961f2dbf --- /dev/null +++ b/tests/manual/combobox/combobox.pro @@ -0,0 +1,10 @@ +QT += qml quick +TARGET = combobox +qtHaveModule(widgets) { + QT += widgets +} + +SOURCES += $$PWD/main.cpp + +OTHER_FILES += \ + qml/main.qml diff --git a/tests/manual/combobox/main.cpp b/tests/manual/combobox/main.cpp new file mode 100644 index 00000000..996add3d --- /dev/null +++ b/tests/manual/combobox/main.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc and its Subsidiary(-ies) 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 <QtWidgets/QApplication> +#include <QtQml> +#include <QtQuick/QQuickView> +#include <QtCore/QString> +#include <QStandardItemModel> +#include <QStringList> + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + QStandardItemModel model; + model.appendRow(new QStandardItem("Norway")); + model.appendRow(new QStandardItem("Netherlands")); + model.appendRow(new QStandardItem("New Zealand")); + model.appendRow(new QStandardItem("Namibia")); + model.appendRow(new QStandardItem("Nicaragua")); + model.appendRow(new QStandardItem("North Korea")); + model.appendRow(new QStandardItem("Northern Cyprus ")); + model.appendRow(new QStandardItem("Sweden")); + model.appendRow(new QStandardItem("Denmark")); + + QStringList strings; + strings << "Norway" << "Sweden" << "Denmark"; + + QQmlApplicationEngine engine; + engine.rootContext()->setContextProperty("standardmodel", &model); + engine.rootContext()->setContextProperty("stringmodel", strings); + engine.load(QUrl("main.qml")); + QObject *topLevel = engine.rootObjects().value(0); + + QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel); + if ( !window ) { + qWarning("Error: Your root item has to be a Window."); + return -1; + } + window->show(); + return app.exec(); +} diff --git a/tests/manual/combobox/main.qml b/tests/manual/combobox/main.qml new file mode 100644 index 00000000..f0d1ab2d --- /dev/null +++ b/tests/manual/combobox/main.qml @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module 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 Digia Plc and its Subsidiary(-ies) 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.1 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.0 +import QtQuick.Dialogs 1.0 +import QtQuick.Window 2.1 + +ApplicationWindow { + width: 640 + height: 480 + minimumWidth: 400 + minimumHeight: 300 + + + ListModel { + id: listModel + ListElement { text: "Norway"} + ListElement { text: "North Korea"} + ListElement { text: "Noruag"} + ListElement { text: "Noman"} + ListElement { text: "Nothing"} + ListElement { text: "Nargl"} + ListElement { text: "Argldaf"} + } + ColumnLayout { + anchors.centerIn: parent + RowLayout { + Label { text: "validated model" ; Layout.fillWidth: true } + ComboBox { + editable: true + validator: IntValidator { bottom: 0 ; top: 100 } + model: [1, 2, 3, 4, 5] + } + } + RowLayout { + Label { text: "Array" ; Layout.fillWidth: true} + ComboBox { + width: 200 + model: ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ] + style: ComboBoxStyle {} + } + ComboBox { + width: 200 + editable: true + model: ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ] + style: ComboBoxStyle {} + } + } + RowLayout { + Label { text: "StandardItemModel" ; Layout.fillWidth: true} + ComboBox { + width: 200 + textRole: "display" + model: standardmodel + style: ComboBoxStyle {} + } + ComboBox { + width: 200 + textRole: "display" + editable: true + model: standardmodel + style: ComboBoxStyle {} + } + } + RowLayout { + Label { text: "ListModel" ; Layout.fillWidth: true} + ComboBox { + width: 200 + textRole: "text" + model: listModel + } + ComboBox { + width: 200 + textRole: "text" + editable: true + model: listModel + } + } + RowLayout { + Label { text: "QStringList" ; Layout.fillWidth: true} + ComboBox { + width: 200 + model: stringmodel + } + ComboBox { + width: 200 + editable: true + model: stringmodel + } + } + } +} diff --git a/tests/manual/testbench/main.qml b/tests/manual/testbench/main.qml index 73ddf62b..5ab9d66f 100644 --- a/tests/manual/testbench/main.qml +++ b/tests/manual/testbench/main.qml @@ -199,6 +199,7 @@ ApplicationWindow { case "checkable": case "checked": case "running": + case "editable": case "frameVisible": case "adjustToContentSize": case "flat": @@ -239,6 +240,7 @@ ApplicationWindow { case "implicitHeight": case "activeFocus": case "implicitWidth": + case "acceptableInput": case "pressed": case "currentText": layout = layouts.readonlyLayout |