diff --git a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/MainForm.ui.qml.tpl b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/MainForm.ui.qml.tpl index 5718eeef36d..a41e66157c0 100644 --- a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/MainForm.ui.qml.tpl +++ b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/MainForm.ui.qml.tpl @@ -2,6 +2,7 @@ import QtQuick %{QtQuickVersion} Rectangle { property alias mouseArea: mouseArea + property alias textEdit: textEdit width: 360 height: 360 @@ -11,8 +12,18 @@ Rectangle { anchors.fill: parent } - Text { - anchors.centerIn: parent - text: "Hello World" + TextEdit { + id: textEdit + text: qsTr("Enter some text...") + verticalAlignment: Text.AlignVCenter + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 20 + Rectangle { + anchors.fill: parent + anchors.margins: -10 + color: "transparent" + border.width: 1 + } } } diff --git a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.cpp b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.cpp index 69f2694815b..a15a1f0b569 100644 --- a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.cpp +++ b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.cpp @@ -2,6 +2,10 @@ %{JS: QtSupport.qtIncludes([], ["QtGui/QGuiApplication", "QtQml/QQmlApplicationEngine"])} int main(int argc, char *argv[]) { +@if %{UseVirtualKeyboard} + qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); + +@endif QGuiApplication app(argc, argv); QQmlApplicationEngine engine; diff --git a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.qml.tpl b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.qml.tpl index 66c4c147c2b..bf7b08db71f 100644 --- a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.qml.tpl +++ b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/main.qml.tpl @@ -1,30 +1,77 @@ import QtQuick %{QtQuickVersion} import QtQuick.Window %{QtQuickWindowVersion} +@if %{UseVirtualKeyboard} +import %{QtQuickVirtualKeyboardImport} +@endif Window { visible: true width: 640 height: 480 title: qsTr("Hello World") +@if %{UseVirtualKeyboard} + id: root +@endif @if %{IsUiFileInUse} MainForm { anchors.fill: parent mouseArea.onClicked: { - Qt.quit(); + console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"')) } } @else MouseArea { anchors.fill: parent onClicked: { - Qt.quit(); + console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"')) } } - Text { - text: qsTr("Hello World") - anchors.centerIn: parent + TextEdit { + id: textEdit + text: qsTr("Enter some text...") + verticalAlignment: Text.AlignVCenter + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 20 + Rectangle { + anchors.fill: parent + anchors.margins: -10 + color: "transparent" + border.width: 1 + } + } +@endif +@if %{UseVirtualKeyboard} + + InputPanel { + id: inputPanel + z: 99 + x: 0 + y: root.height + width: root.width + + states: State { + name: "visible" + when: %{QtQuickVirtualKeyboardWhenVisible} + PropertyChanges { + target: inputPanel + y: root.height - inputPanel.height + } + } + transitions: Transition { + from: "" + to: "visible" + reversible: true + ParallelAnimation { + NumberAnimation { + properties: "y" + duration: 250 + easing.type: Easing.InOutQuad + } + } + } } @endif } diff --git a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/wizard.json b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/wizard.json index e2722e14355..059c7b98ad6 100644 --- a/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/wizard.json +++ b/share/qtcreator/templates/wizards/projects/qmake/qtquickapplication/wizard.json @@ -16,9 +16,12 @@ { "key": "MainCppFileName", "value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src')}" }, { "key": "QtQuickVersion", "value": "%{JS: %{QtVersion}.qtQuickVersion}" }, { "key": "QtQuickWindowVersion", "value": "%{JS: %{QtVersion}.qtQuickWindowVersion}" }, + { "key": "QtQuickVirtualKeyboardImport", "value": "%{JS: %{QtVersion}.qtQuickVirtualKeyboardImport}" }, + { "key": "QtQuickVirtualKeyboardWhenVisible", "value": "%{JS: %{QtVersion}.qtQuickVirtualKeyboardWhenVisible}" }, { "key": "QtQuickFeature", "value": "QtSupport.Wizards.FeatureQtQuick.%{QtQuickVersion}" }, { "key": "UiSupport", "value": "%{JS: '%{QtQuickVersion}' !== '2.3' }" }, - { "key": "IsUiFileInUse", "value": "%{JS: %{UiSupport} && %{QmlUiSplit} }" } + { "key": "IsUiFileInUse", "value": "%{JS: %{UiSupport} && %{QmlUiSplit} }" }, + { "key": "UseVirtualKeyboard", "value": "%{JS: [ %{Plugins} ].indexOf('Boot2Qt') >= 0}" } ], "pages": @@ -48,7 +51,9 @@ "value": "{ 'qtQuickVersion': '2.7', - 'qtQuickWindowVersion': '2.2' + 'qtQuickWindowVersion': '2.2', + 'qtQuickVirtualKeyboardImport': 'QtQuick.VirtualKeyboard 2.1', + 'qtQuickVirtualKeyboardWhenVisible': 'inputPanel.active' }" }, { @@ -56,7 +61,9 @@ "value": "{ 'qtQuickVersion': '2.6', - 'qtQuickWindowVersion': '2.2' + 'qtQuickWindowVersion': '2.2', + 'qtQuickVirtualKeyboardImport': 'QtQuick.Enterprise.VirtualKeyboard 2.0', + 'qtQuickVirtualKeyboardWhenVisible': 'inputPanel.active' }" }, { @@ -64,7 +71,9 @@ "value": "{ 'qtQuickVersion': '2.5', - 'qtQuickWindowVersion': '2.2' + 'qtQuickWindowVersion': '2.2', + 'qtQuickVirtualKeyboardImport': 'QtQuick.Enterprise.VirtualKeyboard 1.3', + 'qtQuickVirtualKeyboardWhenVisible': 'Qt.inputMethod.visible' }" }, { @@ -72,7 +81,9 @@ "value": "{ 'qtQuickVersion': '2.4', - 'qtQuickWindowVersion': '2.2' + 'qtQuickWindowVersion': '2.2', + 'qtQuickVirtualKeyboardImport': 'QtQuick.Enterprise.VirtualKeyboard 1.0', + 'qtQuickVirtualKeyboardWhenVisible': 'Qt.inputMethod.visible' }" }, { @@ -80,7 +91,9 @@ "value": "{ 'qtQuickVersion': '2.3', - 'qtQuickWindowVersion': '2.2' + 'qtQuickWindowVersion': '2.2', + 'qtQuickVirtualKeyboardImport': 'QtQuick.Enterprise.VirtualKeyboard 1.0', + 'qtQuickVirtualKeyboardWhenVisible': 'Qt.inputMethod.visible' }" } ]