From 7adc062cf9370cb81c6766020a82ab5dc1f9e849 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 14 Aug 2020 13:41:08 +0300 Subject: [PATCH 01/57] QmlDesigner: Allow plain expressions to be set with LineEdit control Task-number: QDS-2603 Change-Id: I10a1b513bc21b8736683d4ddc2e290c29b39696d Reviewed-by: Thomas Hartmann --- .../imports/HelperWidgets/LineEdit.qml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/LineEdit.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/LineEdit.qml index 4a544a0f6a9..423a1aa1097 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/LineEdit.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/LineEdit.qml @@ -40,6 +40,7 @@ StudioControls.TextField { translationIndicatorVisible: showTranslateCheckBox property bool writeValueManually: false + property bool writeAsExpression: false property bool __dirty: false @@ -93,7 +94,10 @@ StudioControls.TextField { target: modelNodeBackend onSelectionToBeChanged: { if (__dirty && !writeValueManually) { - lineEdit.backendValue.value = text + if (writeAsExpression) + lineEdit.backendValue.expression = text + else + lineEdit.backendValue.value = text } else if (__dirty) { commitData() } @@ -112,8 +116,12 @@ StudioControls.TextField { if (backendValue.isTranslated) { setTranslateExpression() } else { - if (lineEdit.backendValue.value !== text) - lineEdit.backendValue.value = text; + if (writeAsExpression) { + if (lineEdit.backendValue.expression !== text) + lineEdit.backendValue.expression = text + } else if (lineEdit.backendValue.value !== text) { + lineEdit.backendValue.value = text + } } __dirty = false } From 3d68fa647ca2764a0149e45bc8ae63f2660a6db1 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 2 Jul 2020 18:06:43 +0200 Subject: [PATCH 02/57] Doc: Update info on using Custom Button wizard template ...to create buttons in Qt Design Studio Update some of the tutorial source files accordingly. Change-Id: Id8afc9bf66c30129701bf7951cbc48068137e145 Reviewed-by: Thomas Hartmann --- .../doc/images/loginui1-breadcrumb-bar.png | Bin 20872 -> 0 bytes .../examples/doc/images/loginui1-toolbar.png | Bin 15203 -> 0 bytes doc/qtdesignstudio/examples/doc/loginui1.qdoc | 83 ++++++------ doc/qtdesignstudio/examples/doc/loginui2.qdoc | 6 +- doc/qtdesignstudio/examples/doc/loginui3.qdoc | 29 ----- .../examples/loginui1/PushButton.ui.qml | 73 ++--------- .../examples/loginui1/Screen01.ui.qml | 88 +++---------- .../loginui1/imports/loginui1/Constants.qml | 64 ++-------- .../examples/loginui1/imports/loginui1/qmldir | 1 + .../examples/loginui1/loginui1.qml | 52 +------- .../examples/loginui1/loginui1.qmlproject | 6 +- .../loginui1/loginui1.qmlproject.qtds | 118 ------------------ .../loginui1.qmlproject.qtds.4.10-pre1 | 118 ------------------ .../examples/loginui2/PushButton.ui.qml | 77 +++--------- .../loginui2/loginui2.qmlproject.qtds | 19 +-- .../examples/loginui3/PushButton.ui.qml | 79 +++--------- .../loginui3/loginui3.qmlproject.qtds | 118 ------------------ .../examples/loginui4/PushButton.ui.qml | 81 +++--------- .../loginui4/loginui4.qmlproject.qtds | 118 ------------------ .../loginui4.qmlproject.qtds.4.10-pre1 | 118 ------------------ 20 files changed, 149 insertions(+), 1099 deletions(-) delete mode 100644 doc/qtdesignstudio/examples/doc/images/loginui1-breadcrumb-bar.png delete mode 100644 doc/qtdesignstudio/examples/doc/images/loginui1-toolbar.png delete mode 100644 doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds delete mode 100644 doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds.4.10-pre1 delete mode 100644 doc/qtdesignstudio/examples/loginui3/loginui3.qmlproject.qtds delete mode 100644 doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds delete mode 100644 doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds.4.10-pre1 diff --git a/doc/qtdesignstudio/examples/doc/images/loginui1-breadcrumb-bar.png b/doc/qtdesignstudio/examples/doc/images/loginui1-breadcrumb-bar.png deleted file mode 100644 index 99898235fe8d82cae7af4f8b8dc75dae495b6961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20872 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 diff --git a/doc/qtdesignstudio/examples/doc/images/loginui1-toolbar.png b/doc/qtdesignstudio/examples/doc/images/loginui1-toolbar.png deleted file mode 100644 index 8968b021a425ac383ca2951bb51c7fe7a0f59332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15203 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 - \uicontrol buttonBackground to move into the button background - component. - \li Select the button background in \uicontrol {Form Editor} or - \uicontrol Navigator to display its properties in the - \uicontrol Properties view. + \li Select the button background in \uicontrol Navigator to display its + properties in the \uicontrol Properties view. \li In the \uicontrol Color field, select \inlineimage icons/action-icon.png (\uicontrol Actions) > \uicontrol {Set Binding} and set the button background color to \e #41cd52. - \li Press \key Enter or select the tick button at the bottom of - the editor to save the new value. + \li Press \key Enter or select \uicontrol OK to save the new value. \image loginui1-binding-editor.png "Binding Editor" + \omit \li In the \uicontrol {Border Color} field, set the button border color to \e #21be2b. You could also use the color picker to change the button color. \li In the \uicontrol Radius field, enter 6 to give the button rounded corners. - \li Select \uicontrol Master > \uicontrol textItem, and set the - button text color to white (\e #ffffff). + \endomit + \li Select the text item in \uicontrol Navigator to display its + properties in \uicontrol Properties. + \li In the \uicontrol {Text color} field, set the button text + color to white (\e #ffffff). + \li In the \uicontrol States view, select the \e down state to set the + button text color to white and the background color to a darker + shade of green (\e #21be2b). \li Select \uicontrol File > \uicontrol Save or press \key {Ctrl+S} to save your changes. \endlist - To move back to the top level PushButton type in the - \uicontrol {Form Editor}, select - \uicontrol PushButton.ui.qml on the breadcrumb bar (1): - - \image loginui1-breadcrumb-bar.png "Breadcrumb bar in the Design mode." - Your button should now look something like this: \image loginui1-button-styled.png "Modified button in the Form Editor" @@ -376,7 +369,7 @@ \section1 Next Steps To learn how to add more UI controls and position them on the page using - anchors and layouts so that the UI is scalable, see the next example in + anchors and layouts so that the UI is scalable, see the next tutorial in the series, \l {Log In UI - Part 2}. For a more advanced example of creating a menu button and using it to diff --git a/doc/qtdesignstudio/examples/doc/loginui2.qdoc b/doc/qtdesignstudio/examples/doc/loginui2.qdoc index 97ca6a2cdd4..b1ed1e56029 100644 --- a/doc/qtdesignstudio/examples/doc/loginui2.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui2.qdoc @@ -56,9 +56,9 @@ First, you will add a new rectangle to \uicontrol {Form Editor} and move all the current UI components to it to create a new page. Then, you will \l {Setting Anchors and Margins}{anchor} the static elements on the - page, that is the logo image (\e logo) and page title (\e pageTitle), - to the page. When you created the project using the new project wizard - in Part 1 of this example, the wizard anchored \e pageTitle to the + page, that is the logo image (\e logo) and page title (\e pageTitle), to the + page. When you created the project using the new project wizard template + in Part 1 of this example, the wizard template anchored \e pageTitle to the vertical and horizontal center of the page. Therefore, you will only need to replace the vertical anchor of \e pageTitle with a top anchor to align it with \e logo on the page. diff --git a/doc/qtdesignstudio/examples/doc/loginui3.qdoc b/doc/qtdesignstudio/examples/doc/loginui3.qdoc index a49d211a1d1..d6182232436 100644 --- a/doc/qtdesignstudio/examples/doc/loginui3.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui3.qdoc @@ -214,11 +214,6 @@ \image loginui3.gif "Moving between login page and registration page" - The \e PushButton type also uses states to change the button background and - text color when the button is clicked. Now that clicking buttons performs - actions, you will change the background color for the button down state - from grey to green to match the color in the normal state that you changed - to green in Part 1. \section2 Learn Qt Quick - Signal and Event Handlers @@ -234,30 +229,6 @@ For more information, see \l{Signal and Handler Event System}. - Next, you will modify the properties of the \e PushButton type in the text - editor. - - \section1 Changing Button Background Color - - You will modify the button background color for the \e down state of the - \e PushButton type in the \e PushButton.ui.qml file. - - \list 1 - \li Right-click \e loginButton in the \uicontrol Navigator and select - \uicontrol {Go into Component} to open \e PushButton.ui.qml for - editing in the Design mode. - \li Open the \uicontrol {Text Editor}. - \li Edit the property values for the \e down state, to set the button - text color to white and the background and border colors to - darker shades of green by using the \c {Qt.darker()} function: - \quotefromfile loginui3/PushButton.ui.qml - \skipto states: - \printuntil ] - You could also specify all the colors here as fixed values. - \li Select \uicontrol File > \uicontrol Save or press \key {Ctrl+S} - to save your changes. - \endlist - \section1 Next Steps For a more complicated UI, you would typically use QML types that specify diff --git a/doc/qtdesignstudio/examples/loginui1/PushButton.ui.qml b/doc/qtdesignstudio/examples/loginui1/PushButton.ui.qml index 0feeed16187..cdfd98b3ef4 100644 --- a/doc/qtdesignstudio/examples/loginui1/PushButton.ui.qml +++ b/doc/qtdesignstudio/examples/loginui1/PushButton.ui.qml @@ -1,54 +1,3 @@ - - -/**************************************************************************** -** -** Copyright (C) 2019 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.10 import QtQuick.Templates 2.1 as T import loginui1 1.0 @@ -56,8 +5,6 @@ import loginui1 1.0 T.Button { id: control - text: qsTr("MyButton") - font: Constants.font implicitWidth: Math.max( background ? background.implicitWidth : 0, @@ -68,24 +15,27 @@ T.Button { leftPadding: 4 rightPadding: 4 - background: Rectangle { + text: "My Button" + + background: buttonBackground + Rectangle { id: buttonBackground color: "#41cd52" - radius: 6 implicitWidth: 100 implicitHeight: 40 opacity: enabled ? 1 : 0.3 + border.color: "gray" border.width: 1 - border.color: "#21be2b" + radius: 2 } - contentItem: Text { + contentItem: textItem + Text { id: textItem text: control.text - font: control.font opacity: enabled ? 1.0 : 0.3 - color: "white" + color: "#fdfdfd" horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight @@ -104,14 +54,13 @@ T.Button { when: control.down PropertyChanges { target: textItem - color: "black" + color: "#fdfdfd" } PropertyChanges { target: buttonBackground - color: "#a2a2a2" + color: "#21be2b" border.color: "black" } } ] } - diff --git a/doc/qtdesignstudio/examples/loginui1/Screen01.ui.qml b/doc/qtdesignstudio/examples/loginui1/Screen01.ui.qml index cdfea9ce603..bdd37b0415f 100644 --- a/doc/qtdesignstudio/examples/loginui1/Screen01.ui.qml +++ b/doc/qtdesignstudio/examples/loginui1/Screen01.ui.qml @@ -1,96 +1,46 @@ - - -/**************************************************************************** -** -** Copyright (C) 2019 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.10 +import QtQuick 2.12 import loginui1 1.0 Rectangle { width: Constants.width height: Constants.height + color: "#fdfdfd" Text { id: pageTitle - x: 259 - y: 155 - width: 123 - height: 40 text: qsTr("Qt Account") font.pixelSize: 24 + anchors.verticalCenterOffset: -153 + anchors.horizontalCenterOffset: 1 + anchors.centerIn: parent + font.family: Constants.font.family } Image { id: logo - x: 8 - y: 8 + x: 13 + y: 0 width: 100 height: 100 source: "qt_logo_green_64x64px.png" fillMode: Image.PreserveAspectFit } - PushButton { - id: registerButton - x: 259 - y: 277 - width: 120 - height: 40 - text: qsTr("Create Account") - } - PushButton { id: loginButton - x: 259 - y: 231 + x: 262 + y: 343 width: 120 height: 40 text: qsTr("Log In") } + + PushButton { + id: registerButton + x: 262 + y: 389 + width: 120 + height: 40 + text: qsTr("Create Account") + } } diff --git a/doc/qtdesignstudio/examples/loginui1/imports/loginui1/Constants.qml b/doc/qtdesignstudio/examples/loginui1/imports/loginui1/Constants.qml index 83dbc40a9b9..26a0421c9b6 100644 --- a/doc/qtdesignstudio/examples/loginui1/imports/loginui1/Constants.qml +++ b/doc/qtdesignstudio/examples/loginui1/imports/loginui1/Constants.qml @@ -1,69 +1,27 @@ -/**************************************************************************** -** -** Copyright (C) 2019 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.10 QtObject { readonly property int width: 640 readonly property int height: 480 + readonly property FontLoader mySystemFont: FontLoader { name: "Arial" } + + property alias fontDirectory: directoryFontLoader.fontDirectory + property alias relativeFontDirectory: directoryFontLoader.relativeFontDirectory + /* Edit this comment to add your custom font */ - /* readonly property FontLoader myCustomFont: FontLoader { source: "MyCustomFont.ttf" } */ readonly property font font: Qt.font({ family: mySystemFont.name, - pointSize: Qt.application.font.pixelSize + pixelSize: Qt.application.font.pixelSize }) readonly property font largeFont: Qt.font({ family: mySystemFont.name, - pointSize: Qt.application.font.pixelSize * 1.6 + pixelSize: Qt.application.font.pixelSize * 1.6 }) readonly property color backgroundColor: "#c2c2c2" + + property DirectoryFontLoader directoryFontLoader: DirectoryFontLoader { + id: directoryFontLoader + } } diff --git a/doc/qtdesignstudio/examples/loginui1/imports/loginui1/qmldir b/doc/qtdesignstudio/examples/loginui1/imports/loginui1/qmldir index 616ac203530..69846237302 100644 --- a/doc/qtdesignstudio/examples/loginui1/imports/loginui1/qmldir +++ b/doc/qtdesignstudio/examples/loginui1/imports/loginui1/qmldir @@ -1 +1,2 @@ singleton Constants 1.0 Constants.qml +EventListSimulator 1.0 EventListSimulator.qml diff --git a/doc/qtdesignstudio/examples/loginui1/loginui1.qml b/doc/qtdesignstudio/examples/loginui1/loginui1.qml index 57796d12b4e..46f3994cdc7 100644 --- a/doc/qtdesignstudio/examples/loginui1/loginui1.qml +++ b/doc/qtdesignstudio/examples/loginui1/loginui1.qml @@ -1,54 +1,4 @@ -/**************************************************************************** -** -** Copyright (C) 2019 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.10 +import QtQuick 2.12 import loginui1 1.0 Item { diff --git a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject b/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject index 7c9af71d7c7..322f9d6466d 100644 --- a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject +++ b/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject @@ -28,13 +28,17 @@ Project { directory: "." } + Files { + filter: "*.ttf;*.otf" + } + Environment { QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf" QT_AUTO_SCREEN_SCALE_FACTOR: "1" } /* List of plugin directories passed to QML runtime */ - importPaths: [ "imports" ] + importPaths: [ "imports", "asset_imports" ] /* Required for deployment */ targetDirectory: "/opt/loginui1" diff --git a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds b/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds deleted file mode 100644 index 156d4a96ed7..00000000000 --- a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - EnvironmentId - {595d361f-de69-4ff2-b1f6-d89b95edfd27} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8994bd34-5ed9-4c45-8c0a-94c8f33eca4a} - -1 - 0 - 0 - 0 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - 0 - - - QML Scene - QmlProjectManager.QmlRunConfiguration.QmlScene - CurrentFile - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 22 - - - Version - 22 - - diff --git a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds.4.10-pre1 b/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds.4.10-pre1 deleted file mode 100644 index 5c5b6b4c9e0..00000000000 --- a/doc/qtdesignstudio/examples/loginui1/loginui1.qmlproject.qtds.4.10-pre1 +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - EnvironmentId - {595d361f-de69-4ff2-b1f6-d89b95edfd27} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8994bd34-5ed9-4c45-8c0a-94c8f33eca4a} - -1 - 0 - 0 - 0 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - 0 - - - QML Scene - QmlProjectManager.QmlRunConfiguration.QmlScene - CurrentFile - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 21 - - - Version - 21 - - diff --git a/doc/qtdesignstudio/examples/loginui2/PushButton.ui.qml b/doc/qtdesignstudio/examples/loginui2/PushButton.ui.qml index 7138bb41d8c..6e013d48cf8 100644 --- a/doc/qtdesignstudio/examples/loginui2/PushButton.ui.qml +++ b/doc/qtdesignstudio/examples/loginui2/PushButton.ui.qml @@ -1,54 +1,3 @@ - - -/**************************************************************************** -** -** Copyright (C) 2019 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.10 import QtQuick.Templates 2.1 as T import loginui2 1.0 @@ -56,8 +5,6 @@ import loginui2 1.0 T.Button { id: control - text: qsTr("MyButton") - font: Constants.font implicitWidth: Math.max( background ? background.implicitWidth : 0, @@ -68,24 +15,27 @@ T.Button { leftPadding: 4 rightPadding: 4 - background: Rectangle { + text: "My Button" + + background: buttonBackground + Rectangle { id: buttonBackground color: "#41cd52" - radius: 6 implicitWidth: 100 implicitHeight: 40 opacity: enabled ? 1 : 0.3 + border.color: "gray" border.width: 1 - border.color: "#21be2b" + radius: 2 } - contentItem: Text { + contentItem: textItem + Text { id: textItem text: control.text - font: control.font opacity: enabled ? 1.0 : 0.3 - color: "white" + color: "#fdfdfd" horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight @@ -104,14 +54,19 @@ T.Button { when: control.down PropertyChanges { target: textItem - color: "black" + color: "#fdfdfd" } PropertyChanges { target: buttonBackground - color: "#a2a2a2" + color: "#21be2b" border.color: "black" } } ] } +/*##^## +Designer { + D{i:0;autoSize:true;height:480;width:640} +} +##^##*/ diff --git a/doc/qtdesignstudio/examples/loginui2/loginui2.qmlproject.qtds b/doc/qtdesignstudio/examples/loginui2/loginui2.qmlproject.qtds index 083a067353f..5c5ff41596c 100644 --- a/doc/qtdesignstudio/examples/loginui2/loginui2.qmlproject.qtds +++ b/doc/qtdesignstudio/examples/loginui2/loginui2.qmlproject.qtds @@ -1,6 +1,6 @@ - + EnvironmentId @@ -70,12 +70,12 @@ 0 Deploy - + Deploy ProjectExplorer.BuildSteps.Deploy 1 - Deploy Configuration - + + false ProjectExplorer.DefaultDeployConfiguration 1 @@ -88,12 +88,15 @@ true 0 - QML Scene QmlProjectManager.QmlRunConfiguration.QmlScene + + en CurrentFile - 3768 + false + false + false true false @@ -109,10 +112,10 @@ ProjectExplorer.Project.Updater.FileVersion - 21 + 22 Version - 21 + 22 diff --git a/doc/qtdesignstudio/examples/loginui3/PushButton.ui.qml b/doc/qtdesignstudio/examples/loginui3/PushButton.ui.qml index e22e4216980..b225c50b542 100644 --- a/doc/qtdesignstudio/examples/loginui3/PushButton.ui.qml +++ b/doc/qtdesignstudio/examples/loginui3/PushButton.ui.qml @@ -1,53 +1,3 @@ - -/**************************************************************************** -** -** Copyright (C) 2019 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.10 import QtQuick.Templates 2.1 as T import loginui3 1.0 @@ -55,8 +5,6 @@ import loginui3 1.0 T.Button { id: control - text: qsTr("MyButton") - font: Constants.font implicitWidth: Math.max( background ? background.implicitWidth : 0, @@ -67,24 +15,27 @@ T.Button { leftPadding: 4 rightPadding: 4 - background: Rectangle { + text: "My Button" + + background: buttonBackground + Rectangle { id: buttonBackground color: "#41cd52" - radius: 6 implicitWidth: 100 implicitHeight: 40 opacity: enabled ? 1 : 0.3 + border.color: "gray" border.width: 1 - border.color: "#21be2b" + radius: 2 } - contentItem: Text { + contentItem: textItem + Text { id: textItem text: control.text - font: control.font opacity: enabled ? 1.0 : 0.3 - color: "white" + color: "#fdfdfd" horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight @@ -103,13 +54,19 @@ T.Button { when: control.down PropertyChanges { target: textItem - color: "white" + color: "#fdfdfd" } PropertyChanges { target: buttonBackground - color: Qt.darker("#41cd52", 1.2) - border.color: Qt.darker("#21be2b", 1.2) + color: "#21be2b" + border.color: "black" } } ] } + +/*##^## +Designer { + D{i:0;autoSize:true;height:480;width:640} +} +##^##*/ diff --git a/doc/qtdesignstudio/examples/loginui3/loginui3.qmlproject.qtds b/doc/qtdesignstudio/examples/loginui3/loginui3.qmlproject.qtds deleted file mode 100644 index fafe88caea7..00000000000 --- a/doc/qtdesignstudio/examples/loginui3/loginui3.qmlproject.qtds +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - EnvironmentId - {595d361f-de69-4ff2-b1f6-d89b95edfd27} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8994bd34-5ed9-4c45-8c0a-94c8f33eca4a} - -1 - 0 - 0 - 0 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - 0 - - - QML Scene - QmlProjectManager.QmlRunConfiguration.QmlScene - CurrentFile - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 21 - - - Version - 21 - - diff --git a/doc/qtdesignstudio/examples/loginui4/PushButton.ui.qml b/doc/qtdesignstudio/examples/loginui4/PushButton.ui.qml index 5d49d38abb4..569a92f2b47 100644 --- a/doc/qtdesignstudio/examples/loginui4/PushButton.ui.qml +++ b/doc/qtdesignstudio/examples/loginui4/PushButton.ui.qml @@ -1,53 +1,3 @@ - -/**************************************************************************** -** -** Copyright (C) 2019 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.10 import QtQuick.Templates 2.1 as T import loginui4 1.0 @@ -55,8 +5,6 @@ import loginui4 1.0 T.Button { id: control - text: qsTr("MyButton") - font: Constants.font implicitWidth: Math.max( background ? background.implicitWidth : 0, @@ -67,24 +15,27 @@ T.Button { leftPadding: 4 rightPadding: 4 - background: Rectangle { + text: "My Button" + + background: buttonBackground + Rectangle { id: buttonBackground color: "#41cd52" - radius: 6 implicitWidth: 100 implicitHeight: 40 opacity: enabled ? 1 : 0.3 + border.color: "gray" border.width: 1 - border.color: "#21be2b" + radius: 2 } - contentItem: Text { + contentItem: textItem + Text { id: textItem text: control.text - font: control.font opacity: enabled ? 1.0 : 0.3 - color: "white" + color: "#fdfdfd" horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight @@ -103,21 +54,19 @@ T.Button { when: control.down PropertyChanges { target: textItem - color: "white" + color: "#fdfdfd" } PropertyChanges { target: buttonBackground - color: Qt.darker("#41cd52", 1.2) - border.color: Qt.darker("#21be2b", 1.2) + color: "#21be2b" + border.color: "black" } } ] } - - - -/*##^## Designer { +/*##^## +Designer { D{i:0;autoSize:true;height:480;width:640} } - ##^##*/ +##^##*/ diff --git a/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds b/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds deleted file mode 100644 index f062eb1fea4..00000000000 --- a/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - EnvironmentId - {595d361f-de69-4ff2-b1f6-d89b95edfd27} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8994bd34-5ed9-4c45-8c0a-94c8f33eca4a} - -1 - 0 - 0 - 0 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - 0 - - - QML Scene - QmlProjectManager.QmlRunConfiguration.QmlScene - CurrentFile - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 22 - - - Version - 22 - - diff --git a/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds.4.10-pre1 b/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds.4.10-pre1 deleted file mode 100644 index f4d9a761ec1..00000000000 --- a/doc/qtdesignstudio/examples/loginui4/loginui4.qmlproject.qtds.4.10-pre1 +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - EnvironmentId - {595d361f-de69-4ff2-b1f6-d89b95edfd27} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {8994bd34-5ed9-4c45-8c0a-94c8f33eca4a} - -1 - 0 - 0 - 0 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - false - false - 1000 - - true - 0 - - - QML Scene - QmlProjectManager.QmlRunConfiguration.QmlScene - CurrentFile - - 3768 - false - true - false - false - true - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 21 - - - Version - 21 - - From 7856c2c2f025787f0b0f588bf6a01bf0fa48beea Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 17 Aug 2020 10:54:44 +0200 Subject: [PATCH 03/57] QmlDesigner: Fix compilation of coretests Change-Id: Idd0c717078ac8d4fed9a8d4dfe000091ee2384c5 Reviewed-by: Christian Stenger --- .../instances/interactiveconnectionmanager.cpp | 6 ++++++ .../designercore/instances/nodeinstanceview.cpp | 7 +++++-- .../qmldesigner/designercore/instances/puppetcreator.cpp | 5 +++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp index 6da44603df8..e90d57640d9 100644 --- a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp @@ -27,7 +27,9 @@ #include "nodeinstanceserverproxy.h" #include "nodeinstanceview.h" +#ifndef QMLDESIGNER_TEST #include +#endif #include @@ -49,6 +51,7 @@ void InteractiveConnectionManager::setUp(NodeInstanceServerProxy *nodeInstanceSe { ConnectionManager::setUp(nodeInstanceServerProxy, qrcMappingString, target); +#ifndef QMLDESIGNER_TEST DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); int timeOutTime = settings.value(DesignerSettingsKey::PUPPET_KILL_TIMEOUT).toInt(); for (Connection &connection : m_connections) @@ -65,6 +68,7 @@ void InteractiveConnectionManager::setUp(NodeInstanceServerProxy *nodeInstanceSe }); } } +#endif } void InteractiveConnectionManager::showCannotConnectToPuppetWarningAndSwitchToEditMode() @@ -74,9 +78,11 @@ void InteractiveConnectionManager::showCannotConnectToPuppetWarningAndSwitchToEd tr("The executable of the QML emulation layer (QML Puppet) may not be responding. " "Switching to another kit might help.")); +#ifndef QMLDESIGNER_TEST QmlDesignerPlugin::instance()->switchToTextModeDeferred(); nodeInstanceServerProxy()->nodeInstanceView()->emitDocumentMessage( tr("Cannot Connect to QML Emulation Layer (QML Puppet)")); +#endif } void InteractiveConnectionManager::dispatchCommand(const QVariant &command, Connection &connection) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 21623f865c1..01c924f3130 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -83,12 +83,11 @@ #include #include #include +#include #endif #include -#include - #include #include @@ -552,8 +551,10 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, } } else if (node.isRootNode() && name == "language@Internal") { const QString languageAsString = value.toString(); +#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) multiLanguageAspect->setCurrentLocale(languageAsString); +#endif m_nodeInstanceServer->changeLanguage({languageAsString}); } else if (node.isRootNode() && name == "previewSize@Internal") { m_nodeInstanceServer->changePreviewImageSize(value.toSize()); @@ -992,8 +993,10 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() } QString lastUsedLanguage; +#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) lastUsedLanguage = multiLanguageAspect->currentLocale(); +#endif return CreateSceneCommand( instanceContainerList, diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index bdae76c0d3f..1992f813ac8 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -30,6 +30,7 @@ #include #ifndef QMLDESIGNER_TEST #include +#include #endif #include @@ -45,8 +46,6 @@ #include #include -#include - #include #include #include @@ -521,10 +520,12 @@ QProcessEnvironment PuppetCreator::processEnvironment() const customFileSelectors = m_target->additionalData("CustomFileSelectorsData").toStringList(); +#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_target)) { if (!multiLanguageAspect->databaseFilePath().isEmpty()) environment.set("QT_MULTILANGUAGE_DATABASE", multiLanguageAspect->databaseFilePath().toString()); } +#endif } customFileSelectors.append("DesignMode"); From 96f0d2517f4da4fb0e5564ec59adc89153e614bf Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 17 Aug 2020 13:09:14 +0200 Subject: [PATCH 04/57] QmlDesigner: Add missing include Change-Id: Ib521eab639f416fcacece6d396bc90c2fa473235 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designercore/include/nodeinstanceview.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index 78e56d46cdd..e29b768ea8f 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -41,6 +41,8 @@ #include #include +#include + namespace ProjectExplorer { class Target; } From fcabab7b5f232c48c13cd36062517cc8f60da761 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 17 Aug 2020 14:24:01 +0200 Subject: [PATCH 05/57] QmlDesigner: Extend captured data Change-Id: I780815e6f42be4f3aceb1d784a685cc330572832 Reviewed-by: Tim Jenssen --- .../qmlpuppet/commands/captureddatacommand.h | 39 +++++++++++++++++-- .../qt5capturenodeinstanceserver.cpp | 18 +++++---- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/commands/captureddatacommand.h b/share/qtcreator/qml/qmlpuppet/commands/captureddatacommand.h index c7950e278bc..c9d626e4341 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/captureddatacommand.h +++ b/share/qtcreator/qml/qmlpuppet/commands/captureddatacommand.h @@ -29,11 +29,41 @@ #include "imagecontainer.h" +#include + namespace QmlDesigner { class CapturedDataCommand { public: + struct Property + { + Property() = default; + Property(QString key, QVariant value) + : key(std::move(key)) + , value(std::move(value)) + {} + + friend QDataStream &operator<<(QDataStream &out, const Property &property) + { + out << property.key; + out << property.value; + + return out; + } + + friend QDataStream &operator>>(QDataStream &in, Property &property) + { + in >> property.key; + in >> property.value; + + return in; + } + + QString key; + QVariant value; + }; + struct NodeData { friend QDataStream &operator<<(QDataStream &out, const NodeData &data) @@ -41,7 +71,7 @@ public: out << data.nodeId; out << data.contentRect; out << data.sceneTransform; - out << data.text; + out << data.properties; return out; } @@ -51,7 +81,7 @@ public: in >> data.nodeId; in >> data.contentRect; in >> data.sceneTransform; - in >> data.text; + in >> data.properties; return in; } @@ -59,7 +89,7 @@ public: qint32 nodeId = -1; QRectF contentRect; QTransform sceneTransform; - QString text; + std::vector properties; }; struct StateData @@ -81,7 +111,8 @@ public: } ImageContainer image; - QVector nodeData; + std::vector nodeData; + qint32 nodeId = -1; }; friend QDataStream &operator<<(QDataStream &out, const CapturedDataCommand &command) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturenodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturenodeinstanceserver.cpp index aea75a76c7f..f1e2a3a4758 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturenodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturenodeinstanceserver.cpp @@ -56,17 +56,19 @@ CapturedDataCommand::StateData collectStateData(ServerNodeInstance rootNodeInsta stateData.image = ImageContainer(stateInstanceId, QmlDesigner::renderPreviewImage(rootNodeInstance), stateInstanceId); + stateData.nodeId = stateInstanceId; for (const ServerNodeInstance &instance : nodeInstances) { + CapturedDataCommand::NodeData nodeData; + + nodeData.nodeId = instance.instanceId(); + nodeData.contentRect = instance.contentItemBoundingRect(); + nodeData.sceneTransform = instance.sceneTransform(); auto textProperty = instance.property("text"); - if (!textProperty.isNull() && instance.holdsGraphical()) { - CapturedDataCommand::NodeData nodeData; - nodeData.nodeId = instance.instanceId(); - nodeData.contentRect = instance.contentItemBoundingRect(); - nodeData.sceneTransform = instance.sceneTransform(); - nodeData.text = textProperty.toString(); - stateData.nodeData.push_back(std::move(nodeData)); - } + if (!textProperty.isNull() && instance.holdsGraphical()) + nodeData.properties.emplace_back(QString{"text"}, textProperty.toString()); + + stateData.nodeData.push_back(std::move(nodeData)); } return stateData; From 95e0b71b883b9373ff9d13e65b223d6af6cb5cc3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 17 Aug 2020 16:45:37 +0200 Subject: [PATCH 06/57] QmlDesigner: Do not assume MCU as the default Fixes the sympton of QDS-2554, but not the real issue. Task-number: QDS-2554 Change-Id: I8e0aca0b843bcb2befdc2d9a85b2dbfdb468ffb2 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/integration/designdocument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp index 85238278235..26d7712e1d1 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp @@ -277,7 +277,7 @@ bool DesignDocument::isQtForMCUsProject() const if (m_currentTarget) return m_currentTarget->additionalData("CustomQtForMCUs").toBool(); - return true; + return false; } void DesignDocument::changeToInFileComponentModel(ComponentTextModifier *textModifer) From cf9cdd2a367057cfa1337bdba8c151f436e49c24 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 23 Jul 2020 16:43:12 +0200 Subject: [PATCH 07/57] Squish: Update tst_cmake_speedcrunch Server mode has been dropped. Change-Id: I356f814bb4b0084cfcecd3b92ede1a0c27daf2b4 Reviewed-by: Robert Loehning --- .../tst_cmake_speedcrunch/test.py | 18 +- .../testdata/projecttree_speedcrunch.tsv | 273 +++++++++++------- .../projecttree_speedcrunch_server.tsv | 209 -------------- 3 files changed, 183 insertions(+), 317 deletions(-) delete mode 100644 tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch_server.tsv diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/test.py b/tests/system/suite_general/tst_cmake_speedcrunch/test.py index 29a7934a7fc..e6f07b22c5a 100644 --- a/tests/system/suite_general/tst_cmake_speedcrunch/test.py +++ b/tests/system/suite_general/tst_cmake_speedcrunch/test.py @@ -28,7 +28,7 @@ source("../../shared/qtcreator.py") SpeedCrunchPath = "" BuildPath = tempDir() -def cmakeSupportsServerMode(): +def cmakeSupported(): versionLines = filter(lambda line: "cmake version " in line, getOutputFromCmdline(["cmake", "--version"]).splitlines()) try: @@ -38,17 +38,16 @@ def cmakeSupportsServerMode(): minor = __builtin__.int(matcher.group(2)) except: return False - if major < 3: - return False - elif major > 3: - return True - else: - return minor >= 7 + + return (major, minor) >= (3, 14) def main(): if (which("cmake") == None): test.fatal("cmake not found in PATH - needed to run this test") return + if not cmakeSupported(): + test.warning("CMake version is no more supported for QC") + return if not neededFilePresent(SpeedCrunchPath): return @@ -62,10 +61,7 @@ def main(): return waitForProjectParsing() naviTreeView = "{column='0' container=':Qt Creator_Utils::NavigationTreeView' text~='%s' type='QModelIndex'}" - if cmakeSupportsServerMode(): - treeFile = "projecttree_speedcrunch_server.tsv" - else: - treeFile = "projecttree_speedcrunch.tsv" + treeFile = "projecttree_speedcrunch.tsv" compareProjectTree(naviTreeView % "speedcrunch( \[\S+\])?", treeFile) # Invoke a rebuild of the application diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv b/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv index aa7ec8849ef..8236d245f58 100644 --- a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv +++ b/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv @@ -1,99 +1,178 @@ "text" "nestinglevel" -"cmake_uninstall.cmake.in" "0" "CMakeLists.txt" "0" -"SourceFiles.cmake" "0" -"core" "0" -"book.cpp" "1" -"book.h" "1" -"constants.cpp" "1" -"constants.h" "1" -"evaluator.cpp" "1" -"evaluator.h" "1" -"functions.cpp" "1" -"functions.h" "1" -"numberformatter.cpp" "1" -"numberformatter.h" "1" -"settings.cpp" "1" -"settings.h" "1" -"gui" "0" -"aboutbox.cpp" "1" -"aboutbox.h" "1" -"application.cpp" "1" -"application.h" "1" -"autohidelabel.cpp" "1" -"autohidelabel.h" "1" -"bookdock.cpp" "1" -"bookdock.h" "1" -"constantsdock.cpp" "1" -"constantsdock.h" "1" -"constantswidget.cpp" "1" -"constantswidget.h" "1" -"editor.cpp" "1" -"editor.h" "1" -"functionsdock.cpp" "1" -"functionsdock.h" "1" -"functionswidget.cpp" "1" -"functionswidget.h" "1" -"historydock.cpp" "1" -"historydock.h" "1" -"historywidget.cpp" "1" -"historywidget.h" "1" -"mainwindow.cpp" "1" -"mainwindow.h" "1" -"resultdisplay.cpp" "1" -"resultdisplay.h" "1" -"syntaxhighlighter.cpp" "1" -"syntaxhighlighter.h" "1" -"tipwidget.cpp" "1" -"tipwidget.h" "1" -"variablelistwidget.cpp" "1" -"variablelistwidget.h" "1" -"variablesdock.cpp" "1" -"variablesdock.h" "1" -"math" "0" -"floatcommon.c" "1" -"floatcommon.h" "1" -"floatconst.c" "1" -"floatconst.h" "1" -"floatconvert.c" "1" -"floatconvert.h" "1" -"floaterf.c" "1" -"floaterf.h" "1" -"floatexp.c" "1" -"floatexp.h" "1" -"floatgamma.c" "1" -"floatgamma.h" "1" -"floathmath.c" "1" -"floathmath.h" "1" -"floatio.c" "1" -"floatio.h" "1" -"floatipower.c" "1" -"floatipower.h" "1" -"floatlog.c" "1" -"floatlog.h" "1" -"floatlogic.c" "1" -"floatlogic.h" "1" -"floatlong.c" "1" -"floatlong.h" "1" -"floatnum.c" "1" -"floatnum.h" "1" -"floatpower.c" "1" -"floatpower.h" "1" -"floatseries.c" "1" -"floatseries.h" "1" -"floattrig.c" "1" -"floattrig.h" "1" -"hmath.cpp" "1" -"hmath.h" "1" -"number.c" "1" -"number.h" "1" -"resources" "0" -"speedcrunch.qrc" "1" -"tests" "0" -"testevaluator.cpp" "1" -"testfloatnum.c" "1" -"testhmath.cpp" "1" -"thirdparty" "0" -"binreloc.c" "1" -"binreloc.h" "1" -"main.cpp" "0" +"speedcrunch" "0" +"Source Files" "1" +"core" "2" +"book.cpp" "3" +"constants.cpp" "3" +"evaluator.cpp" "3" +"functions.cpp" "3" +"numberformatter.cpp" "3" +"settings.cpp" "3" +"gui" "2" +"aboutbox.cpp" "3" +"application.cpp" "3" +"autohidelabel.cpp" "3" +"bookdock.cpp" "3" +"constantsdock.cpp" "3" +"constantswidget.cpp" "3" +"editor.cpp" "3" +"functionsdock.cpp" "3" +"functionswidget.cpp" "3" +"historydock.cpp" "3" +"historywidget.cpp" "3" +"mainwindow.cpp" "3" +"resultdisplay.cpp" "3" +"syntaxhighlighter.cpp" "3" +"tipwidget.cpp" "3" +"variablelistwidget.cpp" "3" +"variablesdock.cpp" "3" +"math" "2" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"resources" "2" +"speedcrunch.rc" "3" +"thirdparty" "2" +"binreloc.c" "3" +"main.cpp" "2" +"testevaluator" "0" +"Source Files" "1" +"core" "2" +"evaluator.cpp" "3" +"functions.cpp" "3" +"settings.cpp" "3" +"math" "2" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"tests" "2" +"testevaluator.cpp" "3" +"testfloatnum" "0" +"Source Files" "1" +"math" "2" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"number.c" "3" +"tests" "2" +"testfloatnum.c" "3" +"testhmath" "0" +"Source Files" "1" +"math" "2" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"tests" "2" +"testhmath.cpp" "3" +"" "0" +"core" "1" +"book.h" "2" +"constants.h" "2" +"errors.h" "2" +"evaluator.h" "2" +"functions.h" "2" +"numberformatter.h" "2" +"settings.h" "2" +"gui" "1" +"aboutbox.h" "2" +"application.h" "2" +"autohidelabel.h" "2" +"bookdock.h" "2" +"constantsdock.h" "2" +"constantswidget.h" "2" +"editor.h" "2" +"functionsdock.h" "2" +"functionswidget.h" "2" +"historydock.h" "2" +"historywidget.h" "2" +"mainwindow.h" "2" +"resultdisplay.h" "2" +"syntaxhighlighter.h" "2" +"tipwidget.h" "2" +"variablelistwidget.h" "2" +"variablesdock.h" "2" +"math" "1" +"floatcommon.h" "2" +"floatconfig.h" "2" +"floatconst.h" "2" +"floatconvert.h" "2" +"floaterf.h" "2" +"floatexp.h" "2" +"floatgamma.h" "2" +"floathmath.h" "2" +"floatincgamma.h" "2" +"floatio.h" "2" +"floatipower.h" "2" +"floatlog.h" "2" +"floatlogic.h" "2" +"floatlong.h" "2" +"floatnum.h" "2" +"floatpower.h" "2" +"floatseries.h" "2" +"floattrig.h" "2" +"hmath.h" "2" +"number.h" "2" +"thirdparty" "1" +"binreloc.h" "2" +"CMake Modules" "0" +"cmake_uninstall.cmake.in" "1" +"SourceFiles.cmake" "1" diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch_server.tsv b/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch_server.tsv deleted file mode 100644 index 54457c02561..00000000000 --- a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch_server.tsv +++ /dev/null @@ -1,209 +0,0 @@ -"text" "nestinglevel" -"CMakeLists.txt" "0" -"speedcrunch" "0" -"core" "1" -"book.cpp" "2" -"constants.cpp" "2" -"evaluator.cpp" "2" -"functions.cpp" "2" -"numberformatter.cpp" "2" -"settings.cpp" "2" -"gui" "1" -"aboutbox.cpp" "2" -"application.cpp" "2" -"autohidelabel.cpp" "2" -"bookdock.cpp" "2" -"constantsdock.cpp" "2" -"constantswidget.cpp" "2" -"editor.cpp" "2" -"functionsdock.cpp" "2" -"functionswidget.cpp" "2" -"historydock.cpp" "2" -"historywidget.cpp" "2" -"mainwindow.cpp" "2" -"resultdisplay.cpp" "2" -"syntaxhighlighter.cpp" "2" -"tipwidget.cpp" "2" -"variablelistwidget.cpp" "2" -"variablesdock.cpp" "2" -"math" "1" -"floatcommon.c" "2" -"floatconst.c" "2" -"floatconvert.c" "2" -"floaterf.c" "2" -"floatexp.c" "2" -"floatgamma.c" "2" -"floathmath.c" "2" -"floatio.c" "2" -"floatipower.c" "2" -"floatlog.c" "2" -"floatlogic.c" "2" -"floatlong.c" "2" -"floatnum.c" "2" -"floatpower.c" "2" -"floatseries.c" "2" -"floattrig.c" "2" -"hmath.cpp" "2" -"number.c" "2" -"resources" "1" -"speedcrunch.qrc" "2" -"/" "3" -"locale" "4" -"ar_JO.qm" "5" -"ca_ES.qm" "5" -"cs_CZ.qm" "5" -"de_DE.qm" "5" -"en_GB.qm" "5" -"en_US.qm" "5" -"es_AR.qm" "5" -"es_ES.qm" "5" -"et_EE.qm" "5" -"eu_ES.qm" "5" -"fi_FI.qm" "5" -"fr_FR.qm" "5" -"he_IL.qm" "5" -"hu_HU.qm" "5" -"id_ID.qm" "5" -"it_IT.qm" "5" -"ja_JP.qm" "5" -"ko_KR.qm" "5" -"lv_LV.qm" "5" -"nb_NO.qm" "5" -"nl_NL.qm" "5" -"pl_PL.qm" "5" -"pt_BR.qm" "5" -"pt_PT.qm" "5" -"ro_RO.qm" "5" -"ru_RU.qm" "5" -"sv_SE.qm" "5" -"tr_TR.qm" "5" -"uz_UZ.qm" "5" -"vi_VN.qm" "5" -"zh_CN.qm" "5" -"speedcrunch.png" "4" -"speedcrunch.rc" "2" -"thirdparty" "1" -"binreloc.c" "2" -"main.cpp" "1" -"testevaluator" "0" -"core" "1" -"evaluator.cpp" "2" -"functions.cpp" "2" -"settings.cpp" "2" -"math" "1" -"floatcommon.c" "2" -"floatconst.c" "2" -"floatconvert.c" "2" -"floaterf.c" "2" -"floatexp.c" "2" -"floatgamma.c" "2" -"floathmath.c" "2" -"floatio.c" "2" -"floatipower.c" "2" -"floatlog.c" "2" -"floatlogic.c" "2" -"floatlong.c" "2" -"floatnum.c" "2" -"floatpower.c" "2" -"floatseries.c" "2" -"floattrig.c" "2" -"hmath.cpp" "2" -"number.c" "2" -"tests" "1" -"testevaluator.cpp" "2" -"testfloatnum" "0" -"math" "1" -"floatcommon.c" "2" -"floatconst.c" "2" -"floatconvert.c" "2" -"floaterf.c" "2" -"floatexp.c" "2" -"floatgamma.c" "2" -"floathmath.c" "2" -"floatio.c" "2" -"floatipower.c" "2" -"floatlog.c" "2" -"floatlogic.c" "2" -"floatlong.c" "2" -"floatnum.c" "2" -"floatpower.c" "2" -"floatseries.c" "2" -"floattrig.c" "2" -"number.c" "2" -"tests" "1" -"testfloatnum.c" "2" -"testhmath" "0" -"math" "1" -"floatcommon.c" "2" -"floatconst.c" "2" -"floatconvert.c" "2" -"floaterf.c" "2" -"floatexp.c" "2" -"floatgamma.c" "2" -"floathmath.c" "2" -"floatio.c" "2" -"floatipower.c" "2" -"floatlog.c" "2" -"floatlogic.c" "2" -"floatlong.c" "2" -"floatnum.c" "2" -"floatpower.c" "2" -"floatseries.c" "2" -"floattrig.c" "2" -"hmath.cpp" "2" -"number.c" "2" -"tests" "1" -"testhmath.cpp" "2" -"" "0" -"core" "1" -"book.h" "2" -"constants.h" "2" -"errors.h" "2" -"evaluator.h" "2" -"functions.h" "2" -"numberformatter.h" "2" -"settings.h" "2" -"gui" "1" -"aboutbox.h" "2" -"application.h" "2" -"autohidelabel.h" "2" -"bookdock.h" "2" -"constantsdock.h" "2" -"constantswidget.h" "2" -"editor.h" "2" -"functionsdock.h" "2" -"functionswidget.h" "2" -"historydock.h" "2" -"historywidget.h" "2" -"mainwindow.h" "2" -"resultdisplay.h" "2" -"syntaxhighlighter.h" "2" -"tipwidget.h" "2" -"variablelistwidget.h" "2" -"variablesdock.h" "2" -"math" "1" -"floatcommon.h" "2" -"floatconfig.h" "2" -"floatconst.h" "2" -"floatconvert.h" "2" -"floaterf.h" "2" -"floatexp.h" "2" -"floatgamma.h" "2" -"floathmath.h" "2" -"floatincgamma.h" "2" -"floatio.h" "2" -"floatipower.h" "2" -"floatlog.h" "2" -"floatlogic.h" "2" -"floatlong.h" "2" -"floatnum.h" "2" -"floatpower.h" "2" -"floatseries.h" "2" -"floattrig.h" "2" -"hmath.h" "2" -"number.h" "2" -"thirdparty" "1" -"binreloc.h" "2" -"CMake Modules" "0" -"cmake_uninstall.cmake.in" "1" -"SourceFiles.cmake" "1" From d42571058764c5ac780d9efa80ba6440cde185a0 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 13 Aug 2020 18:15:37 +0200 Subject: [PATCH 08/57] Doc: Update mobile app tutorial - Use Qt Quick Application - Empty wizard template to create a simpler project - Use Add New Assets button to add the Bluebubble.svg file to the project and QRC - Use Connections View Properties tab to add custom properties - Use Properties view and Binding Editor to specify values for the custom properties - Add screenshots Fixes: QTCREATORBUG-24478 Change-Id: Ic165684141b06dc1870054c8faa2f27f33162c20 Reviewed-by: Alessandro Portale --- doc/qtcreator/examples/accelbubble/Bubble.qml | 58 +------ .../examples/accelbubble/Page1Form.ui.qml | 74 --------- .../examples/accelbubble/Page2Form.ui.qml | 67 -------- .../examples/accelbubble/accelbubble.pro | 20 +-- doc/qtcreator/examples/accelbubble/main.cpp | 60 +------ doc/qtcreator/examples/accelbubble/main.qml | 143 +++++------------ doc/qtcreator/examples/accelbubble/qml.qrc | 7 +- .../accelbubble/qtquickcontrols2.conf | 6 - .../creator_android_tutorial_ex_app.png | Bin 7954 -> 5780 bytes ...ator-move-component-into-separate-file.png | Bin 8719 -> 8184 bytes ...ick-mobile-app-tutorial-binding-editor.png | Bin 0 -> 3855 bytes ...ck-mobile-app-tutorial-binding-editor1.png | Bin 0 -> 3802 bytes ...-mobile-app-tutorial-custom-properties.png | Bin 0 -> 3009 bytes .../qtquick-mobile-app-tutorial-image.png | Bin 0 -> 57692 bytes .../qtquick-mobile-app-tutorial-main-view.png | Bin 0 -> 56287 bytes .../creator-mobile-app-tutorial.qdoc | 149 +++++++++--------- ...creator-tutorial-create-qq-project.qdocinc | 89 ----------- 17 files changed, 133 insertions(+), 540 deletions(-) delete mode 100644 doc/qtcreator/examples/accelbubble/Page1Form.ui.qml delete mode 100644 doc/qtcreator/examples/accelbubble/Page2Form.ui.qml delete mode 100644 doc/qtcreator/examples/accelbubble/qtquickcontrols2.conf create mode 100644 doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor.png create mode 100644 doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor1.png create mode 100644 doc/qtcreator/images/qtquick-mobile-app-tutorial-custom-properties.png create mode 100644 doc/qtcreator/images/qtquick-mobile-app-tutorial-image.png create mode 100644 doc/qtcreator/images/qtquick-mobile-app-tutorial-main-view.png delete mode 100644 doc/qtcreator/src/qtquick/creator-only/creator-tutorial-create-qq-project.qdocinc diff --git a/doc/qtcreator/examples/accelbubble/Bubble.qml b/doc/qtcreator/examples/accelbubble/Bubble.qml index 67e1c5922da..043086fcdc9 100644 --- a/doc/qtcreator/examples/accelbubble/Bubble.qml +++ b/doc/qtcreator/examples/accelbubble/Bubble.qml @@ -1,60 +1,12 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator -** -** $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.9 -import QtQuick.Controls 2.2 +import QtQuick 2.14 +import QtQuick.Window 2.14 Image { + id: bubble source: "Bluebubble.svg" smooth: true property real centerX - property real centerY property real bubbleCenter + property real centerY + fillMode: Image.PreserveAspectFit } diff --git a/doc/qtcreator/examples/accelbubble/Page1Form.ui.qml b/doc/qtcreator/examples/accelbubble/Page1Form.ui.qml deleted file mode 100644 index 0ab08fc4833..00000000000 --- a/doc/qtcreator/examples/accelbubble/Page1Form.ui.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator -** -** $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.9 -import QtQuick.Controls 2.2 - -Page { - width: 600 - height: 400 - property alias bubble: bubble - property alias mainWindow: mainWindow - - header: Label { - text: qsTr("Page 1") - font.pixelSize: Qt.application.font.pixelSize * 2 - padding: 10 - } - - Rectangle { - id: mainWindow - color: "#ffffff" - anchors.fill: parent - - Bubble { - id: bubble - } - } -} diff --git a/doc/qtcreator/examples/accelbubble/Page2Form.ui.qml b/doc/qtcreator/examples/accelbubble/Page2Form.ui.qml deleted file mode 100644 index 11a8abff4aa..00000000000 --- a/doc/qtcreator/examples/accelbubble/Page2Form.ui.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator -** -** $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.9 -import QtQuick.Controls 2.2 - -Page { - width: 600 - height: 400 - - header: Label { - text: qsTr("Page 2") - font.pixelSize: Qt.application.font.pixelSize * 2 - padding: 10 - } - - Label { - text: qsTr("You are on Page 2.") - anchors.centerIn: parent - } -} diff --git a/doc/qtcreator/examples/accelbubble/accelbubble.pro b/doc/qtcreator/examples/accelbubble/accelbubble.pro index 2dfcd426527..a0caf1e9b2f 100644 --- a/doc/qtcreator/examples/accelbubble/accelbubble.pro +++ b/doc/qtcreator/examples/accelbubble/accelbubble.pro @@ -2,18 +2,12 @@ QT += quick sensors svg xml CONFIG += c++11 -# The following define makes your compiler emit warnings if you use -# any feature of Qt which as been marked deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if you use deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 -SOURCES += main.cpp +SOURCES += \ + main.cpp RESOURCES += qml.qrc @@ -28,10 +22,4 @@ qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target - ios { - QTPLUGIN += qsvg qsvgicon qtsensors_ios - QMAKE_INFO_PLIST = Info.plist - } - -DISTFILES += \ - Bluebubble.svg +ANDROID_ABIS = armeabi-v7a diff --git a/doc/qtcreator/examples/accelbubble/main.cpp b/doc/qtcreator/examples/accelbubble/main.cpp index 4e002b280ec..fa832817aa3 100644 --- a/doc/qtcreator/examples/accelbubble/main.cpp +++ b/doc/qtcreator/examples/accelbubble/main.cpp @@ -1,53 +1,3 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator -** -** $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 #include @@ -58,9 +8,13 @@ int main(int argc, char *argv[]) QGuiApplication app(argc, argv); QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - if (engine.rootObjects().isEmpty()) - return -1; + const QUrl url(QStringLiteral("qrc:/main.qml")); + QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, + &app, [url](QObject *obj, const QUrl &objUrl) { + if (!obj && url == objUrl) + QCoreApplication::exit(-1); + }, Qt::QueuedConnection); + engine.load(url); return app.exec(); } diff --git a/doc/qtcreator/examples/accelbubble/main.qml b/doc/qtcreator/examples/accelbubble/main.qml index 584ba4d1a72..6e567e819e9 100644 --- a/doc/qtcreator/examples/accelbubble/main.qml +++ b/doc/qtcreator/examples/accelbubble/main.qml @@ -1,105 +1,37 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator -** -** $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.14 +import QtQuick.Window 2.14 +import QtSensors 5.12 -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtSensors 5.9 - -ApplicationWindow { +Window { + id: window visible: true - width: 640 - height: 480 - title: qsTr("Accelerate Bubble") - - SwipeView { - id: swipeView + property alias mainWindow: mainWindow + property alias bubble: bubble + Rectangle { + id: mainWindow + color: "#ffffff" anchors.fill: parent - currentIndex: tabBar.currentIndex - Page1Form { - bubble { - id: bubble - centerX: mainWindow.width / 2 - centerY: mainWindow.height / 2 - bubbleCenter: bubble.width / 2 - x: bubble.centerX - bubble.bubbleCenter - y: bubble.centerY - bubble.bubbleCenter + Bubble { + id: bubble + x: bubble.centerX - bubbleCenter + y: bubble.centerY - bubbleCenter + bubbleCenter: bubble.width /2 + centerX: mainWindow.width /2 + centerY: mainWindow.height /2 - Behavior on y { - SmoothedAnimation { - easing.type: Easing.Linear - duration: 100 - } - } - Behavior on x { - SmoothedAnimation { - easing.type: Easing.Linear - duration: 100 - } + Behavior on y { + SmoothedAnimation { + easing.type: Easing.Linear + duration: 100 + } + } + Behavior on x { + SmoothedAnimation { + easing.type: Easing.Linear + duration: 100 } } - } - - Page2Form { - } - } - - footer: TabBar { - id: tabBar - currentIndex: swipeView.currentIndex - - TabButton { - text: qsTr("Page 1") - } - TabButton { - text: qsTr("Page 2") } } @@ -107,6 +39,7 @@ ApplicationWindow { id: accel dataRate: 100 active: true + readonly property double radians_to_degrees: 180 / Math.PI onReadingChanged: { var newX = (bubble.x + calcRoll(accel.reading.x, accel.reading.y, accel.reading.z) * 0.1) @@ -118,24 +51,24 @@ ApplicationWindow { if (newX < 0) newX = 0 - if (newX > page1.mainWindow.width - bubble.width) - newX = page1.mainWindow.width - bubble.width + if (newX > mainWindow.width - bubble.width) + newX = mainWindow.width - bubble.width if (newY < 18) newY = 18 - if (newY > page1.mainWindow.height - bubble.height) - newY = page1.mainWindow.height - bubble.height + if (newY > mainWindow.height - bubble.height) + newY = mainWindow.height - bubble.height - bubble.x = newX - bubble.y = newY + bubble.x = newX + bubble.y = newY } } - function calcPitch(x, y, z) { - return -(Math.atan(y / Math.sqrt(x * x + z * z)) * 57.2957795); + function calcPitch(x,y,z) { + return -Math.atan2(y, Math.hypot(x, z)) * accel.radians_to_degrees; } - function calcRoll(x, y, z) { - return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795); + function calcRoll(x,y,z) { + return -Math.atan2(x, Math.hypot(y, z)) * accel.radians_to_degrees; } } diff --git a/doc/qtcreator/examples/accelbubble/qml.qrc b/doc/qtcreator/examples/accelbubble/qml.qrc index 7d7777aca02..3e6f33859ad 100644 --- a/doc/qtcreator/examples/accelbubble/qml.qrc +++ b/doc/qtcreator/examples/accelbubble/qml.qrc @@ -1,10 +1,7 @@ - Page1Form.ui.qml - Page2Form.ui.qml - qtquickcontrols2.conf - Bubble.qml - Bluebubble.svg main.qml + Bluebubble.svg + Bubble.qml diff --git a/doc/qtcreator/examples/accelbubble/qtquickcontrols2.conf b/doc/qtcreator/examples/accelbubble/qtquickcontrols2.conf deleted file mode 100644 index 75b2cb8fffb..00000000000 --- a/doc/qtcreator/examples/accelbubble/qtquickcontrols2.conf +++ /dev/null @@ -1,6 +0,0 @@ -; This file can be edited to change the style of the application -; Read "Qt Quick Controls 2 Configuration File" for details: -; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html - -[Controls] -Style=Default diff --git a/doc/qtcreator/images/creator_android_tutorial_ex_app.png b/doc/qtcreator/images/creator_android_tutorial_ex_app.png index 3be9f31fe284c43050487d5ad1dfc5e81a0f40db..b31255f58125da22caf9a22846a094068fe9fdab 100644 GIT binary patch literal 5780 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 Bb7uem literal 7954 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 Hl+XkK6T-m$ diff --git a/doc/qtcreator/images/qtcreator-move-component-into-separate-file.png b/doc/qtcreator/images/qtcreator-move-component-into-separate-file.png index 6ebf605c56bd79d27f17e40b629e1ac29a73260d..3e444ab1bd57c7c2a661a1bbbd3e46a76ae410d2 100644 GIT binary patch literal 8184 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 QU|?YIboFyt=akR{0LtA|sQ>@~ literal 8719 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 diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor.png b/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..2f759e125fac5f17943c1fc3360dc444104c7fe5 GIT binary patch literal 3855 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor1.png b/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0b4082ef3cfbc2f25a044cf1fd2757c815eade GIT binary patch literal 3802 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 HB{Ts5slL0H literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-custom-properties.png b/doc/qtcreator/images/qtquick-mobile-app-tutorial-custom-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..0368c4f8c0dcf7fab83e749cc9b8067884d9dfcd GIT binary patch literal 3009 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-image.png b/doc/qtcreator/images/qtquick-mobile-app-tutorial-image.png new file mode 100644 index 0000000000000000000000000000000000000000..53b2b5544e76f1ae22a5bad6cb01f9775875ff0e GIT binary patch literal 57692 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-main-view.png b/doc/qtcreator/images/qtquick-mobile-app-tutorial-main-view.png new file mode 100644 index 0000000000000000000000000000000000000000..bba67363b55a34f5b560ade191c21aa4e219bdf8 GIT binary patch literal 56287 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 \uicontrol {QML Types}, select - \uicontrol Rectangle and drag and drop it to the \uicontrol Page in - the navigator. + \uicontrol Rectangle and drag and drop it to \e Window + in \uicontrol Navigator. - \li Select the rectangle in the navigator to edit its properties: + \li Select the rectangle in \uicontrol Navigator to edit its properties: + + \image qtquick-mobile-app-tutorial-main-view.png "Rectangle in different views" \list a @@ -105,14 +100,19 @@ \endlist - \li In \uicontrol Library > \uicontrol Assets, select Bluebubble.svg - and drag and drop it to \e mainWindow in the navigator. + \li Select \uicontrol Library > \uicontrol Assets > + \uicontrol {Add New Assets} to locate Bluebubble.svg + (or your own image) and add it to the project folder. + \li Drag and drop the image from \uicontrol Assets to + \e mainWindow in \uicontrol Navigator. \li In the \uicontrol Properties view, \uicontrol Id field, enter \e bubble to be able to reference the image from other places. + \image qtquick-mobile-app-tutorial-image.png "Image file in different views" + \li Select the \inlineimage export_unchecked.png - (\uicontrol Export) button in the navigator to export the + (\uicontrol Export) button in \uicontrol Navigator to export \e mainWindow and \e bubble as properties. \endlist @@ -130,62 +130,80 @@ \li In the \uicontrol {Component name} field, enter \e Bubble. - \li Deselect the \uicontrol x, \uicontrol y, and - \uicontrol {ui.qml file} check boxes. + \li Deselect the \uicontrol x and \uicontrol y check boxes, + because we want to use the accelerometer to determine + the location of the bubble on the screen. \li Select \uicontrol OK to create \e Bubble.qml. \endlist - \QC creates a reference to the Bubble type in \e Page1Form.ui.qml. + \QC creates a reference to the Bubble type in \e main.qml. - To check your code, you can compare your \e Page1Form.ui.qml and + To check your code, you can compare your \e main.qml and \e {Bubble.qml} with the corresponding example files. - The UI is now ready and you can switch to editing the \e Bubble.qml and - \e main.qml files in the \uicontrol {Text Editor}, as described in the - following section. + The UI is now ready and you can add the necessary properties for + making the bubble move. \section1 Moving the Bubble - In the \uicontrol {Text Editor}, edit \e Bubble.qml to add properties that we - will use to position the image: + We add custom properties to position the image in respect to the width + and height of the main window. - \quotefromfile accelbubble/Bubble.qml - \skipto Image - \printuntil } + \list 1 + \li Open \e Bubble.qml in Design mode. + \li In \uicontrol {Connections View}, \uicontrol Properties tab, + select click the \inlineimage plus.png + button to add a custom property for the Bubble type. + \image qtquick-mobile-app-tutorial-custom-properties.png "Connection View Properties tab" + \li Double-click the value in the \uicontrol Property column, and enter + \e centerY as the name of the property. + \li Double-click the value in the \uicontrol {Property Type} column, + and select \e real as the type of the property. You will specify + the property value later in \uicontrol Properties. + \li Add two more properties of the same type with the names \e centerY + and \e bubbleCenter. + \li Open \e main.qml in Design mode. + \li Select \e bubble in \uicontrol Navigator to specify values for the + custom properties in \uicontrol Properties. + \li In the \uicontrol X field, select \inlineimage icons/action-icon.png + , and then select \uicontrol {Set Binding} to open + \uicontrol {Binding Editor}. + \image qtquick-mobile-app-tutorial-binding-editor1.png "Setting binding for X in Binding Editor" + \li Enter the following value to center the bubble horizontally in the + main window when the application starts: + \c{bubble.centerX - bubbleCenter}. + \li Select \uicontrol OK to close the binding editor and save the + binding. + \li In the \uicontrol X field, set the following binding to center the + bubble vertically: \c{bubble.centerY - bubbleCenter}. + \li In the \uicontrol centerY field, enter the following value to bind + the y coordinate of the bubble center to half the height of the main + window: \c {mainWindow.height /2}. + \image qtquick-mobile-app-tutorial-binding-editor.png "Setting binding for centerX" + \li In the \uicontrol centerX field, bind the x coordinate of + the bubble center to half the width of the main window: + \c {mainWindow.width /2}. + \li In the \uicontrol bubbleCenter field, bind the center of + the bubble to half of its width: \c {bubble.width /2}. + \endlist - In the \uicontrol {Text Editor}, edit \e main.qml to specify the application - title, as illustrated by the following code snippet: - - \quotefromfile accelbubble/main.qml - \skipto ApplicationWindow - \printuntil title - - Specify bubble properties to position the image: - - \printuntil bubbleCenter - - Then set the x and y position of the image based on the new properties: - - \printuntil centerY - \skipto /^\}/ - \printuntil } - - Then add code to move the bubble based on Accelerometer sensor values: + We now want to add code to move the bubble based on Accelerometer sensor + values. This is not supported by \uicontrol {Form Editor}, so we will do + it in \uicontrol {Text Editor}: \list 1 \li Add the following import statement to \e main.qml: - \code - import QtSensors 5.9 - \endcode + \quotefromfile accelbubble/main.qml + \skipto QtSensors + \printline QtSensors \li Add the \l{Accelerometer} type with the necessary properties: - \quotefromfile accelbubble/main.qml \skipto Accelerometer - \printuntil true + \printuntil radians_to_degrees \skipto } \printuntil } @@ -195,7 +213,7 @@ \quotefromfile accelbubble/main.qml \skipto function - \printuntil Math.atan(x + \printuntil Math.atan2(x \printuntil } \li Add the following JavaScript code for \c onReadingChanged signal of @@ -206,10 +224,11 @@ \skipto onReadingChanged \printuntil } - We want to ensure that the position of the bubble is always within - the bounds of the screen. If the Accelerometer returns not a number - (NaN), the value is ignored and the bubble position is not updated. - \li Add SmoothedAnimation behavior on the \c x and \c y properties of + We want to ensure that the position of the bubble is always + within the bounds of the screen. If the Accelerometer returns + \e {not a number} (NaN), the value is ignored and the bubble + position is not updated. + \li Add \l SmoothedAnimation behavior on the \c x and \c y properties of the bubble to make its movement look smoother. \quotefromfile accelbubble/main.qml @@ -256,20 +275,6 @@ After adding the dependencies, select \uicontrol Build > \uicontrol {Run qmake} to apply the changes to the Makefile of the project. - \section1 Adding Assets - - You need to add the Bluebubble.svg image file to the application assets - for deployment to mobile devices: - - \list 1 - - \li In the \uicontrol Projects view, double-click the qml.qrc file to open it - in the assets editor. - - \li Select \uicontrol Add to add Bluebubble.svg. - - \endlist - \section1 Running the Application The application is complete and ready to be deployed to a device: diff --git a/doc/qtcreator/src/qtquick/creator-only/creator-tutorial-create-qq-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/creator-tutorial-create-qq-project.qdocinc deleted file mode 100644 index 8152163f535..00000000000 --- a/doc/qtcreator/src/qtquick/creator-only/creator-tutorial-create-qq-project.qdocinc +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Creator documentation. -** -** 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 quick application] - - \section1 Creating the Project - - \list 1 - - \li Select \uicontrol File > \uicontrol {New File or Project} > - \uicontrol {Application (Qt Quick)} > - \uicontrol {Qt Quick Application - Swipe}. - - \li Select \uicontrol Choose to open the - \uicontrol {Project Location} dialog. - - \li In the \uicontrol Name field, enter a name for the application. - - \li In the \uicontrol {Create in} field, enter the path for the project - files. - - \li Select \uicontrol Next (or \uicontrol Continue on \macos) to open - the \uicontrol {Define Build System} dialog. - - \li In the \uicontrol {Build system} field, select the build system to - use for building and running the project: \l qmake, - \l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}. - - \li Select \uicontrol Next to open the - \uicontrol {Define Project Details} dialog. - - \li Select \uicontrol Next to use the default settings and to open - the \uicontrol {Translation File} dialog. - - \li Select \uicontrol Next to use the default settings and to open - the \uicontrol {Kit Selection} dialog. - - \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that - you want to build the application for. To build applications for - mobile devices, select kits for Android ARM and iPhone OS. - - \note Kits are listed if they have been specified in \uicontrol - Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux) - or in \uicontrol {\QC} > \uicontrol Preferences > - \uicontrol Kits (on \macos). - For more information, see \l {Adding Kits}. - - \li Select \uicontrol Next to open the \uicontrol {Project Management} - dialog. - - \li Review the project settings, and select \uicontrol{Finish} - (or \uicontrol Done on \macos) to create the project. - - \endlist - - \QC generates two UI files, \e Page1Form.ui.qml and \e Page2Form.ui.qml, - and a QML file, \e main.qml. You can modify \e Page1Form.ui.qml in the - \uicontrol {Form Editor} to create the application main view and \e main.qml - in the \uicontrol {Text Editor} to add the application logic. For the - purposes of this example, you can ignore \e Page2Form.ui.qml. - - For more information about the settings that you skipped, see - \l{Creating Qt Quick Applications}. - -//! [qt quick application] -*/ From 0a3f193d1e47466a823e52a99e8539873a19fb8e Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 17 Aug 2020 15:23:24 +0200 Subject: [PATCH 09/57] Update German translation Change-Id: Ib719b350b97b9df5d6178e61a39b77293c52613c Reviewed-by: Friedemann Kleint Reviewed-by: Christian Stenger --- share/qtcreator/translations/qtcreator_de.ts | 3308 ++++++++++++------ 1 file changed, 2211 insertions(+), 1097 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 4b28c927392..8eaec177f8d 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -201,10 +201,6 @@ CMakeProjectManager::Internal::CMakeBuildSettingsWidget - - Build directory: - Build-Verzeichnis: - Filter Filter @@ -931,6 +927,10 @@ Trotzdem fortfahren? &Edit &Bearbeiten + + &View + An&sicht + &Tools E&xtras @@ -980,10 +980,6 @@ Trotzdem fortfahren? Save As... Speichern als... - - Save A&ll - &Alles speichern - &Print... &Drucken... @@ -1052,6 +1048,10 @@ Trotzdem fortfahren? Ctrl+- Ctrl+- + + Ctrl+Shift+- + Ctrl+Shift+- + Original Size Originalgröße @@ -1277,14 +1277,6 @@ Trotzdem fortfahren? Core::Internal::PluginDialog - - Show all - Alle anzeigen - - - Show all installed plugins, including base plugins and plugins that are not available on this platform. - Alle installierten Plugins anzeigen, einschließlich Basis-Plugins und Plugins, die für diese Plattform nicht verfügbar sind. - Details Beschreibung @@ -1298,6 +1290,10 @@ Trotzdem fortfahren? Close Schließen + + Install Plugin... + Plugin installieren... + Restart required. Neustart erforderlich. @@ -1406,30 +1402,6 @@ Trotzdem fortfahren? Shortcut Tastenkombination - - Enter key sequence as text - Geben Sie die Tastenfolge als Text ein - - - Key sequence: - Tastenfolge: - - - Use "Cmd", "Opt", "Ctrl", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A". - Benutzen Sie "Cmd", "Opt", "Ctrl", und "Shift" für Hilfstasten. Benutzen Sie "Escape", "Backspace", "Delete", "Insert", "Home" und so weiter für Sondertasten. Kombinieren Sie einzelne Tasten mit "+" und kombinieren Sie mehrere Tastenkombinationen mit "," zu einer Tastenfolge. Wenn der Benutzer etwa die Strg- und Umschalttasten gedrückt halten muss, während er Escape drückt, um danach alle Tasten zu lösen und A zu drücken, geben Sie "Ctrl+Shift+Escape,A" ein. - - - Use "Ctrl", "Alt", "Meta", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A". - Benutzen Sie "Ctrl", "Alt", "Meta", und "Shift" für Hilfstasten. Benutzen Sie "Escape", "Backspace", "Delete", "Insert", "Home" und so weiter für Sondertasten. Kombinieren Sie einzelne Tasten mit "+" und kombinieren Sie mehrere Tastenkombinationen mit "," zu einer Tastenfolge. Wenn der Benutzer etwa die Strg- und Umschalttasten gedrückt halten muss, während er Escape drückt, um danach alle Tasten zu lösen und A zu drücken, geben Sie "Ctrl+Shift+Escape,A" ein. - - - Reset - Zurücksetzen - - - Reset to default. - Auf Vorgabe zurücksetzen. - Keyboard Tastatur @@ -1442,6 +1414,10 @@ Trotzdem fortfahren? Key sequence will not work in editor. Die Tastenfolge wird nicht im Editor funktionieren. + + Add + Hinzufügen + Invalid key sequence. Ungültige Tastenfolge. @@ -1720,6 +1696,10 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf &Executable or symbol file: &Ausführbare Datei oder Symboldatei: + + Override S&ysRoot: + S&ysRoot überschreiben: + Select Remote Core File Entfernte Core-Datei auswählen @@ -1740,6 +1720,14 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Select Startup Script Startskript auswählen + + Select SysRoot Directory + SysRoot-Verzeichnis auswählen + + + This option can be used to override the kit's SysRoot setting + Diese Option kann verwendet werden, um die SysRoot-Einstellung des Kits zu überschreiben + Kit: Kit: @@ -2343,6 +2331,10 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Dereference Pointers Automatically Zeiger automatisch dereferenzieren + + <p>This switches the Locals and Expressions views to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level. + <p>Weist den Debugger an, automatisch dereferenzierte Zeiger anzuzeigen. Dadurch ist die Baumansicht flacher, aber weniger detailreich. + Show "std::" Namespace in Types "std::"-Namensraum in Typnamen anzeigen @@ -2411,10 +2403,6 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf <p>Checking this will enable tooltips in the stack view during debugging. <p>Schaltet Tooltips für die Stack-Anzeige während des Debuggens ein. - - <p>The maximum length of string entries in the Locals and Expressions pane. Longer than that are cut off and displayed with an ellipsis attached. - <p>Die maximale Länge von Zeichenketten in "Lokale Variablen und Ausdrücke". Längere Ausdrücke werden abgeschnitten und mit Auslassungspunkten angezeigt. - <p>The maximum length for strings in separated windows. Longer strings are cut off and displayed with an ellipsis attached. <p>Die maximale Länge von Zeichenketten in separaten Fenstern. Längere Ausdrücke werden abgeschnitten und mit Auslassungspunkten angezeigt. @@ -2423,10 +2411,6 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Synchronize Breakpoints Haltepunkte synchronisieren - - <p>This switches the Locals and Expressions view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level. - <p>Weist den Debugger an automatisch dereferenzierte Zeiger anzuzeigen. Dadurch ist die Baumansicht flacher, aber weniger detailreich. - Adjust Breakpoint Locations Positionen der Haltepunkte korrigieren @@ -2479,6 +2463,10 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf Register For Post-Mortem Debugging Als Post-Mortem-Debugger registrieren + + <p>The maximum length of string entries in the Locals and Expressions views. Longer than that are cut off and displayed with an ellipsis attached. + <p>Die maximale Länge von Zeichenketten in "Lokale Variablen" und "Ausdrücke". Längere Ausdrücke werden abgeschnitten und mit Auslassungspunkten angezeigt. + Reload Full Stack Stack vollständig neu laden @@ -3751,10 +3739,18 @@ markers in the source code editor. Use Display Format Based on Type Anzeigeformat per Typ verwenden + + Reset All Individual Formats + Alle individuellen Formate zurücksetzen + Change Display for Type "%1": Anzeigeformat für den Typ "%1" ändern: + + Reset All Formats for Types + Alle Formate für Typen zurücksetzen + Change Display Format for Selected Values Anzeigeformat für ausgewählte Werte ändern @@ -4732,6 +4728,18 @@ Möchten Sie den Branch "%1" im entfernten Repository erzeugen und ihn &Soft &Soft + + Di&ff Against %1 + Mit %1 &vergleichen + + + Diff &Against Saved %1 + Mit gespeichertem %1 &vergleichen + + + &Save for Diff + Für Vergleich &speichern + Detached HEAD Detached HEAD @@ -6122,6 +6130,21 @@ Add, modify, and remove document filters, which determine the documentation set Category for autotest issues listed under 'Issues' Autotests + + Clean + Displayed name for a "cleaning" build step + Bereinigen + + + Deploy + Displayed name for a deploy step + Deployment + + + Build + Displayed name for a normal build step + Erstellen + Build/Deployment canceled Erstellen/Deployment wurde abgebrochen @@ -7111,10 +7134,30 @@ Möchten Sie sie ignorieren? Adding Files to Project Failed Das Hinzufügen der Dateien zum Projekt schlug fehl + + Remove More Files? + Weitere Dateien entfernen? + + + Remove these files as well? + %1 + Auch diese Dateien entfernen? + %1 + Removing File Failed Fehlschlag bei Entfernen der Datei + + File "%1" was not removed, because the project has changed in the meantime. +Please try again. + Die Datei "%1" wurde nicht entfernt, weil sich das Projekt inzwischen geändert hat. +Bitte versuchen Sie es erneut. + + + Could not remove file "%1" from project "%2". + Die Datei "%1" konnte nicht aus dem Projekt "%2" entfernt werden. + Choose File Name Dateinamen wählen @@ -7247,6 +7290,10 @@ Möchten Sie sie ignorieren? Duplicate File... Datei duplizieren... + + Expand + Erweitern + Ctrl+T Ctrl+T @@ -7365,12 +7412,6 @@ Möchten Sie sie ignorieren? Could not add following files to project %1: Die folgenden Dateien konnten nicht zum Projekt "%1" hinzugefügt werden: - - File %1 was not removed, because the project has changed in the meantime. -Please try again. - Die Datei %1 wurde nicht entfernt, weil sich das Projekt in der Zwischenzeit geändert hat. -Bitte versuchen Sie es erneut. - _copy _kopie @@ -7520,11 +7561,6 @@ Bitte versuchen Sie es erneut. Always save files before build Alle Dateien vor Erstellen speichern - - Build - Build step - Build - Do Not Close Nicht schließen @@ -7566,10 +7602,6 @@ Rename %2 to %3 anyway? The file %1 was renamed to %2, but the project file %3 could not be automatically changed. Die Datei %1 wurde in %2 umbenannt, aber die Projektdatei %3 konnte nicht automatisch geändert werden. - - Could not remove file %1 from project %2. - Die Datei "%1" konnte nicht aus dem Projekt "%2" entfernt werden. - Could not delete file %1. Die Datei "%1" konnte nicht gelöscht werden. @@ -7780,6 +7812,10 @@ Rename %2 to %3 anyway? Copy Resource Path to Clipboard Ressourcenpfad in die Zwischenablage kopieren + + Sort Alphabetically + Alphabetisch sortieren + Subversion::Internal::SettingsPage @@ -8081,29 +8117,6 @@ Rename %2 to %3 anyway? Meine Auswahl speichern - - TextEditor::Internal::CodecSelector - - Text Encoding - Text-Zeichenkodierung - - - The following encodings are likely to fit: - Die folgenden Zeichenkodierungen scheinen der Datei zu entsprechen: - - - Select encoding for "%1".%2 - Auswahl der Zeichenkodierung für "%1".%2 - - - Reload with Encoding - Mit Zeichenkodierung neu laden - - - Save with Encoding - Mit Zeichenkodierung abspeichern - - TextEditor::Internal::ColorScheme @@ -8302,6 +8315,14 @@ Rename %2 to %3 anyway? Do not ask again Nicht noch einmal nachfragen + + Show Details... + Details anzeigen... + + + Hide Details... + Details ausblenden... + Do not &ask again Nicht noch einmal nach&fragen @@ -8568,10 +8589,6 @@ Rename %2 to %3 anyway? Utils::WizardPage - - Name: - Name: - Path: Pfad: @@ -8580,6 +8597,10 @@ Rename %2 to %3 anyway? Choose the Location Pfadangabe + + File name: + Dateiname: + Utils::reloadPrompt @@ -8597,7 +8618,7 @@ Rename %2 to %3 anyway? The default behavior can be set in Tools > Options > Environment > System. - Das vorgegebene Verhalten kann in Extras > Einstellungen > Umgebung >System eingestellt werden. + Das vorgegebene Verhalten kann in Extras > Einstellungen > Umgebung > System eingestellt werden. &Close @@ -9195,7 +9216,7 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. Default - Default + Vorgabe Material @@ -10044,6 +10065,10 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.Switch the active workspace. Den aktiven Arbeitsbereich wechseln. + + Edit global annotation for current file. + Globale Annotation der aktuellen Datei bearbeiten. + QmlJSEditor::Internal::QmlJSEditorPlugin @@ -10060,14 +10085,6 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.SnippetProvider QML - - Rename Symbol Under Cursor - Symbol unter Einfügemarke umbenennen - - - Ctrl+Shift+R - Ctrl+Shift+R - Run Checks Prüfungen ausführen @@ -10537,6 +10554,14 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Reset all to default. Alle auf Vorgabewert zurücksetzen. + + Reset + Zurücksetzen + + + Reset to default. + Auf Vorgabe zurücksetzen. + Import... Importieren... @@ -10638,17 +10663,6 @@ The name of the release build configuration created by default for a qmake proje Profile - - ProjectExplorer::BuildEnvironmentWidget - - Clear system environment - Systemumgebung löschen - - - Build Environment - Build-Umgebung - - ProjectExplorer::Internal::CustomWizardPage @@ -10685,6 +10699,28 @@ For CMake projects, make sure QML_IMPORT_PATH variable is in CMakeCache.txt. Importpfade: %2 +Für qmake-Projekte benutzen Sie die Variable QML_IMPORT_PATH, um Importpfade hinzuzufügen. +Für Qbs-Projekte geben Sie eine qmlImportPaths-Eigenschaft in Ihrem Produkt an, um Importpfade hinzuzufügen. +Für qmlproject-Projekte benutzen Sie die Eigenschaft importPaths, um Importpfade hinzuzufügen. +Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMakeCache.txt steht. + + + + Implicit import '%1' of QML module '%2' not found. + +Import paths: +%3 + +For qmake projects, use the QML_IMPORT_PATH variable to add import paths. +For Qbs projects, declare and set a qmlImportPaths property in your product to add import paths. +For qmlproject projects, use the importPaths property to add import paths. +For CMake projects, make sure QML_IMPORT_PATH variable is in CMakeCache.txt. + + Der implizite Import '%1' des QML-Moduls '%2' wurde nicht gefunden. + +Importpfade: +%3 + Für qmake-Projekte benutzen Sie die Variable QML_IMPORT_PATH, um Importpfade hinzuzufügen. Für Qbs-Projekte geben Sie eine qmlImportPaths-Eigenschaft in Ihrem Produkt an, um Importpfade hinzuzufügen. Für qmlproject-Projekte benutzen Sie die Eigenschaft importPaths, um Importpfade hinzuzufügen. @@ -10714,6 +10750,62 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa Source size Größe der Bildquelle + + Horizontal alignment + Horizontal ausrichten + + + Vertical alignment + Vertikal ausrichten + + + Asynchronous + Asynchron + + + Specifies that images on the local filesystem should be loaded asynchronously in a separate thread. + Legt fest, dass Bilder aus dem lokalen Dateisystem asynchron in einem eigenen Thread geladen werden. + + + Auto transform + Automatisch umwandeln + + + Specifies whether the image should automatically apply image transformation metadata such as EXIF orientation. + Legt fest, ob das Bild automatisch Metadaten zur Umwandlung verwenden soll, beispielsweise EXIF-Ausrichtung. + + + Cache + Cache + + + Specifies whether the image should be cached. + Legt fest, ob das Bild zwischengespeichert werden soll. + + + Mipmap + MIP Map + + + Specifies whether the image uses mipmap filtering when scaled or transformed. + Legt fest, ob das Bild MIP-Maps zum Skalieren oder Umwandeln verwendet. + + + Mirror + Spiegeln + + + Specifies whether the image should be horizontally inverted. + Legt fest, ob das Bild horizontal gespiegelt werden soll. + + + Smooth + Glatt + + + Specifies whether the image is smoothly filtered when scaled or transformed. + Legt fest, ob das Bild beim Skalieren oder Umwandeln geglättet wird. + RectangleSpecifics @@ -10848,12 +10940,44 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa Unterer Rand - Horizontal Fill mode - Füllmodus horizontal + Horizontal Tile mode + Kachelmodus horizontal - Vertical Fill mode - Füllmodus vertikal + Vertical Tile mode + Kachelmodus vertikal + + + Mirror + Spiegeln + + + Specifies whether the image should be horizontally inverted. + Legt fest, ob das Bild horizontal gespiegelt werden soll. + + + Smooth + Glatt + + + Specifies whether the image is smoothly filtered when scaled or transformed. + Legt fest, ob das Bild beim Skalieren oder Umwandeln geglättet wird. + + + Cache + Cache + + + Specifies whether the image should be cached. + Legt fest, ob das Bild zwischengespeichert werden soll. + + + Asynchronous + Asynchron + + + Specifies that images on the local filesystem should be loaded asynchronously in a separate thread. + Legt fest, dass Bilder aus dem lokalen Dateisystem asynchron in einem eigenen Thread geladen werden. Source size @@ -11070,6 +11194,22 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa Override height of root item. Höhe des Wurzelelements überschreiben. + + Zoom in + Vergrößern + + + Zoom out + Verkleinern + + + Zoom screen to fit all content + Vergrößerung an gesamten Inhalt anpassen + + + Zoom screen to fit current selection + Vergrößerung an Auswahl anpassen + Reset View Ansicht zurücksetzen @@ -11159,6 +11299,10 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Convert to Binary In Binärdarstellung umwandeln + + Add forward declaration for %1 + Forward declaration für %1 hinzufügen + Escape String Literal as UTF-8 Zeichenkette als UTF-8-Escape-Sequenzen darstellen @@ -11780,7 +11924,7 @@ wenn es außerhalb von git bash aufgerufen wird. %1 Steps %1 is the name returned by BuildStepList::displayName - Schritte für %1 + Schritte zum %1 No %1 Steps @@ -11848,10 +11992,6 @@ wenn es außerhalb von git bash aufgerufen wird. Display name of the default deploy configuration Deployment-Konfiguration - - Deploy Settings - Deployment-Einstellungen - ProjectExplorer::RunControl @@ -11998,6 +12138,10 @@ wenn es außerhalb von git bash aufgerufen wird. Filter tree Baum filtern + + Sort Alphabetically + Alphabetisch sortieren + TextEditor::Internal::OutlineFactory @@ -12327,42 +12471,14 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie Expected dependency definitions Abhängigkeitsdefinitionen erwartet - - Expected only Property, Method, Signal and Enum object definitions, not "%1". - Es sollten nur Eigenschafts-, Methoden-, Signal- oder Aufzählungsobjektdefinitionen vorhanden sein, nicht jedoch "%1". - - - Expected only name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite and exportMetaObjectRevisions script bindings, not "%1". - Erwartet werden nur Angaben bezüglich name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite oder exportMetaObjectRevisions-Skript-Bindings, nicht jedoch "%1". - - - Expected only script bindings and object definitions. - Es sollten nur Skript-Bindings und Objektdefinitionen vorhanden sein. - Component definition is missing a name binding. Bei der Komponentendefinition fehlt ein Namens-Binding. - - Expected only uri, version and name script bindings. - Es sollten nur URI-, Versions- oder Namens-Skript-Bindings vorhanden sein. - - - Expected only script bindings. - Es sollten nur Skript-Bindings vorhanden sein. - ModuleApi definition has no or invalid version binding. Die ModuleApi-Definition hat kein oder ein ungültiges version-Binding. - - Expected only Parameter object definitions. - Es sollten nur Parameterobjektdefinitionen vorhanden sein. - - - Expected only name and type script bindings. - Es sollten nur Namens- und Typ-Skript-Bindings vorhanden sein. - Method or signal is missing a name script binding. Bei der Methode oder dem Signal fehlt ein Namens-Skript-Binding. @@ -12371,18 +12487,10 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie Expected script binding. Es wird ein Skript-Binding erwartet. - - Expected only type, name, revision, isPointer, isReadonly and isList script bindings. - Es sollten nur Typ-, Namens-, Revisions-, isPointer-, isReadonly- oder isList-Skript-Bindings vorhanden sein. - Property object is missing a name or type script binding. Bei dem Eigenschaftsobjekt fehlt ein Namens- oder Typ-Skript-Binding. - - Expected only name and values script bindings. - Es sollten nur Namens- oder Wert-Skript-Bindings vorhanden sein. - Expected string after colon. Nach dem Doppelpunkt wird eine Zeichenkette erwartet. @@ -12477,9 +12585,13 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie Versionskontrolle - Would you like to remove this file from the version control system (%1)? + Would you like to remove + %1 +from the version control system (%2)? Note: This might remove the local file. - Möchten Sie die Datei aus der Versionskontrolle (%1) entfernen? + Möchten Sie die Datei + %1 +aus der Versionskontrolle (%2) entfernen? Hinweis: Unter Umständen wird die lokale Datei gelöscht. @@ -13770,6 +13882,10 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Rescan Project Projekt neu auswerten + + Parse and verify a CMake reply file. + CMake-Antwortdatei auswerten und überprüfen. + Build Erstellen @@ -13786,6 +13902,22 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Ctrl+Alt+B Ctrl+Alt+B + + Select a CMake Reply File + Eine CMake-Antwortdatei auswählen + + + The reply file "%1" and referenced data parsed OK and passed validation. + Die Antwortdatei "%1" und die verwiesenen Daten wurden korrekt ausgewertet und geprüft. + + + The reply file "%1" failed to parse or validate with error message:<br><b>"%2"</b> + Die Antwortdatei "%1" konnte nicht ausgewertet und geprüft werden. Fehlermeldung:<br><b>"%2"</b> + + + Parsing Result + Ergebnis der Auswertung + Build File is not supported for generator "%1" Der Generator "%1" unterstützt das Erstellen einer Datei nicht @@ -13919,13 +14051,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Änderungen werden nach einem Neustart wirksam. - - ProjectExplorer::Internal::GccToolChainFactory - - GCC - GCC - - ProjectExplorer::Internal::GccToolChainConfigWidget @@ -13945,27 +14070,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.&ABI: - - ProjectExplorer::Internal::MingwToolChainFactory - - MinGW - MinGW - - - - ProjectExplorer::Internal::LinuxIccToolChainFactory - - ICC - ICC - - - - ProjectExplorer::Internal::MsvcToolChainFactory - - MSVC - MSVC - - ProjectExplorer::Internal::ToolChainOptionsPage @@ -14939,6 +15043,14 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Flow Anordnung + + Horizontal item alignment + Horizontale Ausrichtung + + + Vertical item alignment + Vertikale Ausrichtung + Spacing Abstand @@ -15373,26 +15485,20 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Einschließliche Kosten: %1 - - Core::InfoBarDisplay - - &Show Details - &Details anzeigen - - - Do Not Show Again - Nicht noch einmal anzeigen - - - Close - Schließen - - Core::OutputWindow + + Elided %n characters due to Application Output settings + + Ein Zeichen wurde wegen der Einstellungen für die Ausgabe der Anwendung ausgelassen + %n Zeichen wurden wegen der Einstellungen für die Ausgabe der Anwendung ausgelassen + + - Additional output omitted. You can increase the limit in the "Build & Run" settings. - Weitere Ausgaben wurden weggelassen. Diese Begrenzung können Sie in den Einstellungen zu "Erstellung und Ausführung" erhöhen. + [Discarding excessive amount of pending output.] + + [Überschüssige anstehende Ausgaben werden verworfen.] + @@ -15507,13 +15613,6 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Projekt %1 - - ProjectExplorer::Internal::ClangToolChainFactory - - Clang - Clang - - QmlDesigner::ComponentAction @@ -15826,8 +15925,8 @@ Wollen Sie die Daten vorher speichern? %1 ist zur Zeit mit "%2" verknüpft. - <html><body>Qt installation information was not found in "%1". Choose a directory that contains one of the files <pre>%2</pre> - <html><body>In "%1" wurde keine Qt-Installationsinformation gefunden. Wählen Sie ein Verzeichnis, das eine der folgenden Dateien enthält <pre>%2</pre> + Qt installation information was not found in "%1". Choose a directory that contains one of the files %2 + In "%1" wurde keine Qt-Installationsinformation gefunden. Wählen Sie ein Verzeichnis, das eine der folgenden Dateien enthält %2 Choose Qt Installation @@ -16194,6 +16293,14 @@ Wird ein Problem gefunden, dann wird die Anwendung angehalten und kann untersuch Cannot create temporary file in %1: %2 Es konnte keine temporäre Datei erstellt in %1 werden: %2 + + Overwrite File? + Datei überschreiben? + + + Overwrite existing file "%1"? + Soll die Datei "%1" überschrieben werden? + Valgrind::Callgrind::Function @@ -16361,12 +16468,106 @@ Zusätzlich wird die Verbindung zum Gerät getestet. This property holds whether the item accepts mouse events. - Diese Eigenschaft legt fest, ob das Element Mausereignisse akzeptiert. + Diese Eigenschaft bestimmt, ob das Element Mausereignisse akzeptiert. - Hover Enabled + Hover enabled Hover aktiviert + + Accepted buttons + Akzeptierte Tasten + + + This property holds the mouse buttons that the mouse area reacts to. + Diese Eigenschaft enthält die Maustasten, auf die die MouseArea reagiert. + + + Press and hold interval + pressAndHold-Zeitspanne + + + This property overrides the elapsed time in milliseconds before pressAndHold is emitted. + Diese Eigenschaft bestimmt vorrangig die Zeit, die verstreichen muss, bevor das pressAndHold-Signal gesendet wird. + + + Scroll gesture enabled + Bildlaufgeste aktiviert + + + This property controls whether this MouseArea responds to scroll gestures from non-mouse devices. + Diese Eigenschaft bestimmt, ob diese MouseArea auf Bildlaufgesten von Geräten reagiert, die keine Maus sind. + + + Cursor shape + Mauszeiger-Form + + + This property holds the cursor shape for this mouse area. + Diese Eigenschaft enthält die Form des Mauszeigers für diese MouseArea. + + + Prevent stealing + Stealing verhindern + + + This property controls whether the mouse events may be stolen from this MouseArea. + Diese Eigenschaft bestimmt, ob Stealing von Mausereignissen für diese MouseArea erlaubt ist. + + + Propagate composed events + Zusammengesetzte Ereignisse verbreiten + + + This property controls whether composed mouse events will automatically propagate to other MouseAreas. + Diese Eigenschaft bestimmt, ob zusammengesetzte Mausereignisse an andere MouseAreas verbreitet werden. + + + Drag + Ziehen + + + Target + Ziel + + + Sets the id of the item to drag. + Legt die ID des zu ziehenden Items fest. + + + Axis + Achse + + + Specifies whether dragging can be done horizontally, vertically, or both. + Legt fest, ob Ziehen horizontal, vertikal oder in beiden Richtung erlaubt ist. + + + Filter children + Children filtern + + + Specifies whether a drag overrides descendant MouseAreas. + Legt fest, ob Ziehen nachgeordnete MouseAreas überstimmt. + + + Threshold + Grenze + + + Determines the threshold in pixels of when the drag operation should start. + Bestimmt die Untergrenze in Pixeln, ab der eine Mausbewegung als Drag and Drop gewertet wird. + + + Smoothed + Glatt + + + If set to true, the target will be moved only after the drag operation has started. +If set to false, the target will be moved straight to the current mouse position. + Wenn wahr, wird das Zielobjekt erst bewegt, wenn das Ziehen begonnen hat. +Wenn falsch, wird das Zielobjekt sofort zur aktuellen Mouseposition bewegt. + This property holds whether hover events are handled. Diese Eigenschaft legt fest, ob das Element Hover-Ereignisse akzeptiert. @@ -17427,6 +17628,10 @@ p, li { white-space: pre-wrap; } Days Tagen + + Make public: + Öffentlich machen: + CodePaster::Internal::SettingsPage @@ -17454,6 +17659,10 @@ p, li { white-space: pre-wrap; } Days Tagen + + Make pasted content public by default + Hochgeladene Inhalte standardmäßig öffentlich machen + CppTools::Internal::CppFileSettingsPage @@ -17880,6 +18089,18 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Default line endings: Vorgabe für Zeilenenden: + + For the file patterns listed, do not trim trailing whitespace. + Leerzeichen am Ende nicht in den aufgelisteten Dateitypen bereinigen. + + + Skip clean whitespace for file types: + Leerzeichen nicht in Dateitypen bereinigen: + + + List of wildcard-aware file patterns, separated by commas or semicolons. + Eine durch Kommas oder Semikolons getrennte Liste von Dateinamen. (Platzhalter sind möglich) + TextEditor::Internal::CodeStyleSelectorWidget @@ -18482,6 +18703,14 @@ should a repository require SSH-authentication (see documentation on SSH and the Show textual graph log. Zeigt Graph als Text an. + + Color + Farbe + + + Use colors in log. + Farben im Log verwenden. + Follow Folgen @@ -19084,18 +19313,10 @@ should a repository require SSH-authentication (see documentation on SSH and the Android Settings Android-Einstellungen - - Native AVD Manager... - Nativer AVD-Manager... - SDK Manager SDK-Manager - - Automatically download Android SDK Tools to selected location. - Android SDK-Tools automatisch an den gewählten Ort herunterladen. - Android NDK list: Android NDK-Liste: @@ -19112,14 +19333,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Remove the selected NDK if it has been added manually. Das gewählte NDK entfernen, wenn Sie es selbst hinzugefügt haben. - - Android OpenSSL settings - Android OpenSSL-Einstellungen - - - OpenSSL .pri location: - Pfad zur .pri-Datei von OpenSSL: - Select the path of the prebuilt OpenSSL binaries. Wählen Sie den Pfad der bereits erstellten OpenSSL-Bibliotheken. @@ -19137,8 +19350,20 @@ should a repository require SSH-authentication (see documentation on SSH and the URL zum Herunterladen des Android NDK im Browser des System öffnen. - Automatically download OpenSSL prebuilt libraries. If the automatic download fails, the download URL will be opened in the system's browser for manual download. - Bereits erstellte OpenSSL-Bibliotheken automatisch herunterladen. Wenn das automatische Herunterladen fehlschlägt, wird eine URL zum manuellen Herunterladen im Browser geöffnet. + Set Up SDK + SDK einrichten + + + Android OpenSSL settings (Optional) + OpenSSL-Einstellungen für Android (optional) + + + OpenSSL binaries location: + Pfad zu OpenSSL-Binärdateien: + + + Download OpenSSL + OpenSSL herunterladen @@ -19334,10 +19559,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Select JDK Path Pfad zum JDK auswählen - - AVD manager UI tool is not available in the installed SDK tools (version %1). Use the command line tool "avdmanager" for advanced AVD management. - Das grafische Werkzeug "AVD Manager" ist in den installierten SDK-Tools (Version %1) nicht verfügbar. Benutzen Sie das Kommando "avdmanager" für erweiterte AVD-Verwaltung. - The selected path already has a valid SDK Tools package. Der gewählte Pfad enthält bereits ein gültiges SDK-Tools-Paket. @@ -19346,34 +19567,14 @@ should a repository require SSH-authentication (see documentation on SSH and the Remove Android Virtual Device Android Virtual Device entfernen - - The selected download path (%1) for OpenSSL already exists. Remove and overwrite its content? - Der gewählte Pfad zum Herunterladen von OpenSSL (%1) existiert bereits. Möchten Sie seinen Inhalt entfernen und überschreiben? - Cloning OpenSSL prebuilt libraries... Bereits erstellte OpenSSL-Bibliotheken werden geklont... - - OpenSSL prebuilt libraries cloning failed. Opening OpenSSL URL for manual download. - Klonen von bereits erstellten OpenSSL-Bibliotheken schlug fehl. URL zum manuellen Herunterladen von OpenSSL wird geöffnet. - Remove device "%1"? This cannot be undone. Gerät "%1" entfernen? Dies kann nicht rückgängig gemacht werden. - - (SDK Version: %1, NDK Bundle Version: %2) - (SDK-Version: %1, NDK-Bundle-Version: %2) - - - AVD Manager Not Available - AVD-Manager ist nicht verfügbar - - - Select Android SDK folder - Android-SDK-Verzeichnis auswählen - Select an NDK NDK auswählen @@ -19418,10 +19619,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Platform tools installed. Plattformwerkzeuge sind installiert. - - SDK manager runs (requires exactly Java 1.8). - SDK-Manager läuft (benötigt die genaue Java-Version 1.8). - All essential packages installed for all installed Qt versions. Für alle installierten Qt-Versionen sind alle notwendigen Pakete installiert. @@ -19434,18 +19631,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Platform SDK installed. Plattform-SDK ist installiert. - - Default Android NDK path exists. - Pfad zum vorgegebenen Android-NDK existiert. - - - Default Android NDK directory structure is correct. - Die Verzeichnisstruktur des vorgegebenen Android-NDK ist korrekt. - - - Default Android NDK installed into a path without spaces. - Das vorgegebene Android-NDK ist in einem Pfad ohne Leerzeichen installiert. - OpenSSL path exists. Pfad zu OpenSSL existiert. @@ -19467,20 +19652,12 @@ should a repository require SSH-authentication (see documentation on SSH and the OpenSSL-Einstellungen sind fehlerhaft. - Select OpenSSL Include Project File - Include-Projektdatei für OpenSSL wählen + Select Android SDK Folder + Android-SDK-Verzeichnis auswählen - Automatically download Android SDK Tools to selected location. - -If the selected path contains no valid SDK Tools, the SDK Tools package is downloaded from %1, and extracted to the selected path. -After the SDK Tools are properly set up, you are prompted to install any essential packages required for Qt to build for Android. - - Android-SDK-Tools automatisch an den gewählten Ort herunterladen. - -Wenn der gewählte Pfad keine gültigen SDK-Tools enthält, wird das Paket von %1 heruntergeladen und in den gewählten Pfad entpackt. -Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, alle notwendigen Pakete zu installieren, die Qt benötigt, um für Anroid zu erstellen. - + Select OpenSSL Include Project File + Include-Projektdatei für OpenSSL wählen OpenSSL Cloning @@ -19490,6 +19667,30 @@ Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, OpenSSL prebuilt libraries repository is already configured. Das Repository für bereits erstellte OpenSSL-Bibliotheken ist bereits konfiguriert. + + The selected download path (%1) for OpenSSL already exists and the directory is not empty. Select a different path or make sure it is an empty directory. + Das gewählte Zielverzeichnis zum Herunterladen von OpenSSL (%1) ist bereits vorhanden und nicht leer. Bitte wählen Sie einen anderen Pfad oder sorgen Sie dafür, dass er leer ist. + + + OpenSSL prebuilt libraries cloning failed. + Das Klonen bereits erstellter OpenSSL-Bibliotheken ist gescheitert. + + + Opening OpenSSL URL for manual download. + Die URL zum manuellen Herunterladen von OpenSSL wird geöffnet. + + + Open Download URL + URL zum Herunterladen öffnen + + + The Git tool might not be installed properly on your system. + Möglicherweise ist Git nicht korrekt auf Ihrem System installiert. + + + (SDK Version: %1, NDK Version: %2) + (SDK-Version: %1, NDK-Version: %2) + Download and install Android SDK Tools to: %1? Android-SDK-Tools herunterladen und nach %1 installieren? @@ -19498,6 +19699,42 @@ Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, Cancel Abbrechen + + Automatically download Android SDK Tools to selected location. + +If the selected path contains no valid SDK Tools, the SDK Tools package is downloaded +from %1, +and extracted to the selected path. +After the SDK Tools are properly set up, you are prompted to install any essential +packages required for Qt to build for Android. + Android-SDK-Tools automatisch an den gewählten Ort herunterladen. + +Wenn der gewählte Pfad keine gültigen SDK-Tools enthält, wird das Paket +von %1 +heruntergeladen und in den gewählten Pfad entpackt. +Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, alle +notwendigen Pakete zu installieren, die Qt benötigt, um für Android zu erstellen. + + + Automatically download OpenSSL prebuilt libraries. + +These libraries can be shipped with your application if any SSL operations +are performed. Find the checkbox under "Projects > Build > Build Steps > +Build Android APK > Additional Libraries". +If the automatic download fails, Qt Creator proposes to open the download URL +in the system's browser for manual download. + Bereits erstellte OpenSSL-Bibliotheken automatisch herunterladen. + +Diese Bibliotheken können mit Ihrer Anwendung weitergegeben werden, falls +diese SSL-Funktionen verwendet. Sie finden eine Checkbox unter "Projekte > Erstellen > +Schritte zum Erstellen > Android-APK erstellen > Zusätzliche Bibliotheken". +Falls das automatische Herunterladen scheitert, wird Qt Creator vorschlagen, die URL zum +manuellen Herunterladen im Browser des System zu öffnen. + + + Missing Android SDK Packages + Fehlende Android-SDK-Pakete + Android Android @@ -19506,6 +19743,10 @@ Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, Android settings are OK. Android-Einstellungen sind korrekt. + + SDK manager runs (SDK Tools versions <= 26.x require exactly Java 1.8). + SDK-Manager läuft (SDK-Tools-Versionen <= 26.x benötigen die genaue Java-Version 1.8). + Android settings have errors. Android-Einstellungen sind fehlerhaft. @@ -19514,17 +19755,6 @@ Nachdem die SDK-Tools vollständig eingerichtet wurden, werden Sie aufgefordert, Android SDK installation is missing necessary packages. Do you want to install the missing packages? Der Android-SDK-Installation fehlen notwendige Pakete. Wollen Sie die fehlenden Pakete installieren? - - Missing Android SDK packages - Fehlende Android-SDK-Pakete - - - - Android::Internal::AndroidToolChainFactory - - Android Clang - Android Clang - Bookmarks::Internal::BookmarkViewFactory @@ -20520,17 +20750,17 @@ hinzufügen, um dem QML-Editor den wahrscheinlichen URI mitzuteilen.API - Device type + Device Type Gerätetyp + + SD-card Size + Größe der SD-Karte + Target Ziel - - SD-card size - Größe der SD-Karte - CPU/ABI CPU/ABI @@ -20631,6 +20861,18 @@ hinzufügen, um dem QML-Editor den wahrscheinlichen URI mitzuteilen.&Server start script: &Server-Startskript: + + Select SysRoot Directory + SysRoot-Verzeichnis auswählen + + + This option can be used to override the kit's SysRoot setting. + Diese Option kann verwendet werden, um die SysRoot-Einstellung des Kits zu überschreiben. + + + Override S&ysRoot: + S&ysRoot überschreiben: + This option can be used to send the target init commands. Diese Option kann verwendet werden, um Kommandos zum Einrichten des Ziels zu senden. @@ -20745,6 +20987,10 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve The <RCC> root element is missing. Das Wurzelelement (<RCC>) fehlt. + + Cannot save file. + Die Datei konnte nicht gespeichert werden. + Core::IVersionControl @@ -21229,13 +21475,6 @@ Entfernt: %4 Der mergetool-Prozess wurde beendet, Rückgabewert %1 - - ProjectExplorer::Internal::CustomToolChainFactory - - Custom - Benutzerdefiniert - - ProjectExplorer::Internal::TextEditDetailsWidget @@ -21252,10 +21491,6 @@ Entfernt: %4 ProjectExplorer::Internal::CustomToolChainConfigWidget - - Custom Parser Settings... - Benutzerdefinierte Einstellungen des Parsers... - MACRO[=VALUE] MAKRO[=WERT] @@ -21311,6 +21546,10 @@ Entfernt: %4 ProjectExplorer::GccToolChain + + GCC + GCC + %1 (%2, %3 %4 in %5) %1 (%2, %3 %4 in %5) @@ -21382,10 +21621,22 @@ Entfernt: %4 Connect Verbinden + + Select Effect + Effekt auswählen + + + Group + Group + Flow Anordnung + + Flow Effects + Flow-Effekte + Stacked Container Verschachtelte Container @@ -21430,6 +21681,10 @@ Entfernt: %4 Reset Position Position zurücksetzen + + Merge File With Template + Datei mit Vorlage zusammenführen + Go to Implementation Zu Implementierung gehen @@ -21442,6 +21697,18 @@ Entfernt: %4 Create Flow Action Flow Action erstellen + + Set Flow Start + Flow-Beginn einstellen + + + Group in GroupItem + In GroupItem gruppieren + + + Remove GroupItem + GroupItem entfernen + Add Item Element hinzufügen @@ -21522,6 +21789,10 @@ Entfernt: %4 Add flow action. Flow action hinzufügen. + + Edit List Model... + List-Model bearbeiten... + Reset z Property Z-Wert zurücksetzen @@ -21992,6 +22263,10 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code Hit maximum recursion limit when visiting AST. Maximale Rekursionstiefe beim Durchlaufen des Syntaxbaums erreicht. + + Type cannot be instantiated recursively (%1). + Typ kann nicht rekursiv instanziiert werden (%1). + Invalid property name "%1". "%1" ist kein gültiger Name einer Eigenschaft. @@ -23164,14 +23439,6 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Ctrl+Shift+I Ctrl+Shift+I - - Rename Symbol Under Cursor - Symbol unter Einfügemarke umbenennen - - - CTRL+SHIFT+R - CTRL+SHIFT+R - Reparse Externally Changed Files Extern geänderte Dateien neu auswerten @@ -23359,16 +23626,20 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Minimal erforderliches SDK: - Select low DPI icon. - Symbol für geringe Auflösung auswählen. + Advanced + Erweitert - Select medium DPI icon. - Symbol für mittlere Auflösung auswählen. + Application icon + Symbol der Anwendung - Select high DPI icon. - Symbol für hohe Auflösung auswählen. + Android services + Android-Dienste + + + Splash screen + Startbildschirm The structure of the Android manifest file is corrupted. Expected a top level 'manifest' node. @@ -23402,22 +23673,6 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Run: Ausführen: - - Low DPI icon - Symbol mit geringer Auflösung - - - Medium DPI icon - Symbol mit mittlerer Auflösung - - - High DPI icon - Symbol mit hoher Auflösung - - - Application icon: - Symbol der Anwendung: - Permissions Berechtigungen @@ -23438,6 +23693,22 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Add Hinzufügen + + Style extraction: + Stil-Extraktion: + + + Service Definition Invalid + Dienstdefinition ungültig + + + Cannot switch to source when there are invalid services. + Es kann nicht zum Quelltext umgeschaltet werden, wenn ungültige Dienste vorhanden sind. + + + Cannot save when there are invalid services. + Es kann nicht gespeichert werden, wenn ungültige Dienste vorhanden sind. + API %1: %2 API %1: %2 @@ -23455,24 +23726,8 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. Zu Fehler gehen - Choose Low DPI Icon - Wählen Sie ein Symbol für geringe DPI-Werte aus - - - Icon scaled up - Symbol wurde hochskaliert - - - Click to select - Klicken zum Auswählen - - - Choose Medium DPI Icon - Wählen Sie ein Symbol für mittlere DPI-Werte aus - - - Choose High DPI Icon - Wählen Sie ein Symbol für hohe DPI-Werte aus + Services invalid. Manifest cannot be saved. Correct the service definitions before saving. + Dienste ungültig. Manifest kann nicht gespeichert werden. Bitte korrigieren Sie die Dienstdefinitionen bevor Sie speichern. Android Manifest editor @@ -23778,6 +24033,10 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind. CustomToolChain + + Parser for toolchain %1 + Parser für Toolchain %1 + GCC GCC @@ -24124,6 +24383,14 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Sets the font's weight. Gibt die Stärke der Schrift an. + + Style name + Stilname + + + Sets the font's style. + Gibt den Stil der Schrift an. + Style Stil @@ -24170,6 +24437,14 @@ In manchen Schriftsystemem, beispielsweise Brahmi, wäre Text sonst nicht lesbar Verschönerung dient. Die preferShaping-Eigenschaft auf "false" zu setzen deaktiviert diese Funktionalität, wenn sie nicht benötigt wird, was meist die Geschwindigkeit erhöht. + + Hinting preference + Hinting-Einstellung + + + Sets the preferred hinting on the text. + Gibt das bevorzugte Hinting für den Text an. + Prefer shaping Shaping bevorzugen @@ -24189,6 +24464,14 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Elide Auslassung + + Maximum line count + Maximale Zeilenzahl + + + Limits the number of lines that the text item will show. + Begrenzt die Anzahl von Zeilen, die das Text-Item anzeigen wird. + Alignment Ausrichtung @@ -24213,6 +24496,26 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Specifies how the font size of the displayed text is determined. Legt fest wie die Schriftgröße des angezeigten Texts bestimmt wird. + + Minimum size + Mindestgröße + + + Pixel + Pixel + + + Specifies the minimum font pixel size of scaled text. + Legt die minimale Fontgröße von skaliertem Text in Pixeln fest. + + + Point + Point + + + Specifies the minimum font point size of scaled text. + Legt die minimale Fontgröße von skaliertem Text in Points fest. + Line height Zeilenhöhe @@ -24221,6 +24524,14 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Sets the line height for the text. Gibt die Zeilenhöhe für den Text an. + + Line height mode + Zeilenhöhen-Modus + + + Determines how the line height is specified. + Bestimmt, wie die Zeilenhöhe festgelegt wird. + TextInputSpecifics @@ -24250,11 +24561,6 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Android::Internal::AndroidDeployQtStep - - Deploy to Android device - AndroidDeployQtStep default display name - Deployment auf Android-Gerät - No Android arch set by the .pro file. Die .pro-Datei setzt keine Android-Architektur. @@ -24271,6 +24577,27 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Cannot find the androiddeploy Json file. Kann die androiddeploy Json-Datei nicht finden. + + Uninstall the existing app first + Zuerst die vorhandene App deinstallieren + + + Reset Default Deployment Devices + Auswahl von Geräten für Deployment zurücksetzen + + + Install an APK File + Eine APK-Datei installieren + + + Qt Android Installer + Qt Android Installer + + + Deploy to Android Device + AndroidDeployQtStep default display name + Deployment auf Android-Gerät + Cannot find the package name. Kann den Paketnamen nicht finden. @@ -24303,22 +24630,6 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Deploy to Android device or emulator Deployment auf Android-Gerät oder Emulator - - Uninstall previous package - Vorheriges Paket entfernen - - - Reset Default Devices - Geräteauswahl zurücksetzen - - - Install Ministro from APK - Ministro aus APK installieren - - - Qt Android Smart Installer - Qt Android Smart Installer - Android package (*.apk) Android-Paket (*.apk) @@ -24327,6 +24638,10 @@ benötigt wird, was meist die Geschwindigkeit erhöht. Initializing deployment to Android device/simulator Initialisiere Deployment zu Android-Gerät oder -Simulator + + Android: The main ABI of the deployment device (%1) is not selected! The app execution or debugging might not work properly. Add it from Projects > Build > Build Steps > qmake > ABIs. + Android: Die Haupt-ABI des Deployment-Geräts (%1) ist nicht ausgewählt. Die Ausführung oder das Debuggen der App könnte nicht richtig funktionieren. Bitte fügen Sie sie in Projekte > Erstellen > Schritte zum Erstellen > qmake > ABIs hinzu. + Starting: "%1" Starte: "%1" @@ -24481,6 +24796,22 @@ Möchten Sie das vorhandene Paket deinstallieren? iOS Device iOS-Gerät + + Device name: + Gerätename: + + + Identifier: + Bezeichner: + + + OS Version: + Betriebssystemversion: + + + CPU Architecture: + CPU-Architektur: + iOS iOS @@ -24703,8 +25034,12 @@ Möchten Sie das vorhandene Paket deinstallieren? ProjectExplorer::TargetSetupPage - <span style=" font-weight:600;">No suitable kits found.</span><br/>Add a kit in the <a href="buildandrun">options</a> or via the maintenance tool of the SDK. - <span style=" font-weight:600;">Es wurden keine geeigneten Kits gefunden.</span><br/>Bitte fügen Sie ein Kit in den <a href="buildandrun">Einstellungen</a> oder unter Verwendung des SDK-Verwaltungswerkzeugs hinzu. + No suitable kits found. + Es wurden keine geeigneten Kits gefunden. + + + Add a kit in the <a href="buildandrun">options</a> or via the maintenance tool of the SDK. + Bitte fügen Sie ein Kit in den <a href="buildandrun">Einstellungen</a> oder unter Verwendung des SDK-Verwaltungswerkzeugs hinzu. Select all kits @@ -24762,6 +25097,34 @@ Möchten Sie das vorhandene Paket deinstallieren? Flickable Flickable + + Press delay + Druckverzögerung + + + Holds the time to delay (ms) delivering a press to children of the Flickable. + Enthält die Zeit (ms), um die die Weitergabe eines Druckes an die Children des Flickable verzögert wird. + + + Pixel aligned + An Pixeln ausgerichtet + + + Sets the alignment of contentX and contentY to pixels (true) or subpixels (false). + Richtet contentX und contentY an Pixeln (wahr) oder Subpixeln (falsch) aus. + + + Synchronous drag + Synchrones Ziehen + + + If set to true, then when the mouse or touchpoint moves far enough to begin dragging +the content, the content will jump, such that the content pixel which was under the +cursor or touchpoint when pressed remains under that point. + Wenn dies wahr ist und die Maus oder der Berührungspunkt sich weit genug bewegt, um +ein Ziehen des Inhalts zu beginnen, wird der Inhalt springen. Dadurch bleibt das Inhaltspixel, +das beim Drücken unter dem Zeiger oder Berührungspunkt war, unter diesem Punkt. + Content size Größe des Inhalts @@ -24770,6 +25133,10 @@ Möchten Sie das vorhandene Paket deinstallieren? Content Inhalt + + Origin + Ursprung + Margins Ränder @@ -24782,10 +25149,26 @@ Möchten Sie das vorhandene Paket deinstallieren? Behavior Verhalten + + Determines whether the surface may be dragged beyond the Flickable's boundaries, or overshoot the Flickable's boundaries when flicked. + Bestimmt, ob die Oberfläche über die Ränder des Flickable-Items hinaus gezogen werden darf oder sie beim Flicken überschreiten darf. + + + Movement + Bewegung + + + Determines whether the Flickable will give a feeling that the edges of the view are soft, rather than a hard physical boundary. + Bestimmt, ob das Flickable-Item den Anschein erweckt, dass die Ränder der Ansicht nachgeben, anstelle eines harten Anschlags. + Interactive Interaktiv + + Describes whether the user can interact with the Flickable. A user cannot drag or flick a Flickable that is not interactive. + Beschreibt, ob der Benutzer mit dem Flickable-Item interagieren kann. Ein Benutzer kann ein Flickable-Item nicht ziehen oder flicken, wenn es nicht interaktiv ist. + Max. velocity Maximale Geschwindigkeit @@ -24821,6 +25204,10 @@ Möchten Sie das vorhandene Paket deinstallieren? Rotation Drehung + + State + State + Enabled Aktiviert @@ -24845,6 +25232,30 @@ Möchten Sie das vorhandene Paket deinstallieren? Anti-aliasing active Kantenglättung aktiv + + Focus + Fokus + + + Holds whether the item has focus within the enclosing FocusScope. + Enhält, ob das Item den Fokus innerhalb des umgebenden FocusScope hat. + + + Active focus on tab + Aktiver Fokus auf Reiter + + + Holds whether the item wants to be in the tab focus chain. + Enthält, ob das Item in der Tab-Fokus-Kette enthalten sein will. + + + Baseline offset + Abstand der Basislinie + + + Specifies the position of the item's baseline in local coordinates. + Legt die Position der Basislinie des Items in lokalen Koordinaten fest. + ColumnSpecifics @@ -24929,102 +25340,6 @@ Möchten Sie das vorhandene Paket deinstallieren? Layout Layout - - Align - Ausrichten - - - Align objects - Objekte ausrichten - - - Align left edges. - Linke Ränder ausrichten. - - - Align horizontal centers. - Horizontale Zentren ausrichten. - - - Align right edges. - Rechte Ränder ausrichten. - - - Align top edges. - Obere Ränder ausrichten. - - - Align vertical centers. - Vertikale Zentren ausrichten. - - - Align bottom edges. - Untere Ränder ausrichten. - - - Distribute left edges. - Linke Ränder verteilen. - - - Distribute horizontal centers. - Horizontale Zentren verteilen. - - - Distribute right edges. - Rechte Ränder verteilen. - - - Distribute top edges. - Obere Ränder verteilen. - - - Distribute vertical centers. - Vertikale Zentren verteilen. - - - Distribute bottom edges. - Untere Ränder verteilen. - - - Distribute spacing horizontally. - Abstand horizontal einteilen. - - - Distribute spacing vertically. - Abstand vertikal einteilen. - - - Distribute objects - Objekte verteilen - - - Distribute spacing - Abstand einteilen - - - Align to - Ausrichten an - - - Key object - Key-Objekt - - - Warning - Warnung - - - - The selection contains the root item. - - Die Auswahl enthält das Wurzel-Item. - - - - The selection contains a non visual item. - - Die Auswahl enthält ein nicht sichtbares Item. - - - - An item in the selection uses anchors. - - Ein Item der Auswahl benutzt Anchor. - Advanced Erweitert @@ -25747,6 +26062,14 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Sets the margin, in pixels, around the text in the Text Edit. Legt die Randbreite um den Text in einem Text Edit in Pixeln fest. + + Maximum length + Maximale Länge + + + Sets the maximum permitted length of the text in the TextInput. + Legt die maximal erlaubte Länge von Text im TextInput-Item fest. + Flags Optionen @@ -25872,13 +26195,6 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Profile - - QmakeProjectManager::QmakeManager - - QMake - QMake - - QmakeProjectManager::QmakeProject @@ -25960,6 +26276,10 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Add Library... Bibliothek hinzufügen... + + QMake + QMake + ImportManagerComboBox @@ -25972,13 +26292,6 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D <Import hinzufügen> - - Qnx::Internal::QnxToolChainFactory - - QCC - QCC - - Qnx::Internal::QnxToolChainConfigWidget @@ -26127,73 +26440,6 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev Testet das Ergebnis des Entfernens der zuletzt abgegebenen Revision, ohne wirklich etwas zu löschen. - - Beautifier::Internal::ArtisticStyle::ArtisticStyleOptionsPage - - Configuration - Konfiguration - - - Artistic Style command: - Ausführbare Datei von Artistic Style: - - - Options - Einstellungen - - - Use file *.astylerc defined in project files - Verwende Datei *.astylerc wie in Projektdateien definiert - - - Use file .astylerc or astylerc in HOME - HOME is replaced by the user's home directory - Verwende .astylerc oder astylerc in HOME - - - Use customized style: - Verwende angepassten Stil: - - - Restrict to MIME types: - Auf MIME-Typen beschränken: - - - Use specific config file: - Bestimmte Konfigurationsdatei verwenden: - - - - Beautifier::Internal::ClangFormat::ClangFormatOptionsPage - - Configuration - Konfiguration - - - Clang Format command: - Ausführbare Datei von Clang Format: - - - Options - Einstellungen - - - Use predefined style: - Verwende vorgegebenen Stil: - - - Use customized style: - Verwende angepassten Stil: - - - Restrict to MIME types: - Auf MIME-Typen beschränken: - - - Fallback style: - Fallback-Stil: - - Beautifier::Internal::ConfigurationDialog @@ -26236,50 +26482,6 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev Konfiguration bearbeiten - - Beautifier::Internal::Uncrustify::UncrustifyOptionsPage - - Configuration - Konfiguration - - - Uncrustify command: - Ausführbare Datei von Uncrustify: - - - Options - Einstellungen - - - Use file uncrustify.cfg defined in project files - Verwende Datei uncrustify.cfg wie in Projektdateien definiert - - - Use file uncrustify.cfg in HOME - HOME is replaced by the user's home directory - Verwende uncrustify.cfg in HOME - - - Use customized style: - Verwende angepassten Stil: - - - For action Format Selected Text - Für die Aktion "Formatiere selektierten Text" - - - Format entire file if no text was selected - Formatiere die ganze Datei falls kein Text selektiert ist - - - Restrict to MIME types: - Auf MIME-Typen beschränken: - - - Use file specific uncrustify.cfg - Dateispezifische uncrustify.cfg verwenden - - Core::Internal::FindDialog @@ -27489,6 +27691,10 @@ wirklich löschen? ColorEditor + + Color + Farbe + Solid Color Vollfarbe @@ -27605,6 +27811,10 @@ wirklich löschen? Location Ort + + The default suffix if you do not explicitly specify a file extension is ".%1". + Wenn Sie keine Dateinamenserweiterung angeben, wird ".%1" verwendet. + Android::Internal::AvdDialog @@ -27747,12 +27957,12 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Ausgabe-Hilfsbibliothek benutzen - Debugging Helper Customization - Anpassung der Ausgabe-Hilfsbibliothek + The debugging helpers are used to produce a nice display of objects of certain types like QString or std::map in the &quot;Locals&quot; and &quot;Expressions&quot; views. + Die Ausgabe-Hilfsbibliothek wird benutzt um bestimmte Datentypen wie QString oder std::map in &quot;Lokale Variablen&quot; und &quot;Ausdrücke&quot; ansprechend anzuzeigen. - The debugging helpers are used to produce a nice display of objects of certain types like QString or std::map in the &quot;Locals and Expressions&quot; view. - Die Ausgabe-Hilfsbibliothek wird benutzt um bestimmte Datentypen wie QString oder std::map in &quot;Lokale Variablen und Ausdrücke&quot; ansprechend anzuzeigen. + Debugging Helper Customization + Anpassung der Ausgabe-Hilfsbibliothek Python commands entered here will be executed after built-in debugging helpers have been loaded and fully initialized. You can load additional debugging helpers or modify existing ones here. @@ -28005,6 +28215,10 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Reload Neu laden + + Unfiltered + Ungefiltert + Meta+Shift+C Meta+Shift+C @@ -28171,10 +28385,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.%1 needs a compiler set up to build. Configure a compiler in the kit options. %1 benötigt einen Compiler zum Erstellen des Projekts. Bitte richten Sie einen Compiler in den Kit-Einstellungen ein. - - %1 needs a build configuration set up to build. Configure a build configuration in the project settings. - %1 benötigt eine Erstellungskonfiguration zum Erstellen. Bitte richten Sie eine in den Projekteinstellungen ein. - ProjectExplorer::XcodebuildParser @@ -28598,8 +28808,8 @@ Der vom Kit mindestens benötigte API-Level ist %1. Android-Debugger (%1, NDK %2) - Android for %1 (Clang %2) - Android für %1 (Clang %2) + Android %1 Clang %2 + Android %1 Clang %2 @@ -29566,10 +29776,6 @@ Dies betrifft die Haltepunkte %1 Creates a C++ header and a source file for a new class that you can add to a C++ project. Erzeugt jeweils eine C++-Header- und -Quelldatei für eine neue Klasse, die Sie zu einem C++-Projekt hinzufügen können. - - C++ - C++ - C++ Class C++-Klasse @@ -29610,6 +29816,14 @@ Dies betrifft die Haltepunkte %1 Qt Item Model Qt Item Model + + Qt for Python module: + Qt for Python Modul: + + + You can choose Qt classes only if you select a Qt for Python module. + Sie können Qt-Klassen nur wählen, wenn sie ein Qt for Python Modul auswählen. + Import QtCore QtCore importieren @@ -29674,22 +29888,6 @@ Dies betrifft die Haltepunkte %1 Creates a new unit test project. Unit tests allow you to verify that the code is fit for use and that there are no regressions. Erstellt ein neues Unit-Test-Projekt. Unit-Tests können sicherstellen, dass Quelltext seine Aufgabe erfüllt und keine Regressionen enthält. - - Creates a C++ header file that you can add to a C++ project. - Erzeugt eine C++-Headerdatei, die Sie zu einem C++-Projekt hinzufügen können. - - - C++ Header File - C++-Header-Datei - - - Creates a C++ source file that you can add to a C++ project. - Erzeugt eine C++-Quelldatei, die Sie zu einem C++-Projekt hinzufügen können. - - - C++ Source File - C++-Quelldatei - Choose a Form Template Formularvorlage auswählen @@ -30004,6 +30202,10 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Auto Test Project Autotest-Projekt + + C/C++ + C/C++ + Creates an empty Nim file using UTF-8 charset. Erzeugt eine leere Nim-Datei, die den UTF-8 Zeichensatz verwendet. @@ -30064,6 +30266,10 @@ Benutzen Sie dies nur für Prototypen. Sie können damit keine vollständige Anw Boost Test Boost Test + + Catch2 + Catch2 + Test suite name: Test Suite-Name: @@ -30076,6 +30282,14 @@ Benutzen Sie dies nur für Prototypen. Sie können damit keine vollständige Anw Boost include directory (optional): Boost-Include-Verzeichnis (optional): + + Catch2 include directory (optional): + Catch2 include-Verzeichnis (optional): + + + Use Qt libraries + Qt-Bibliotheken verwenden + This wizard creates a custom Qt Creator plugin. Dieser Assistent erstellt ein benutzerdefiniertes Qt-Creator-Plugin. @@ -30184,18 +30398,34 @@ Benutzen Sie dies nur für Prototypen. Sie können damit keine vollständige Anw %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++src'))} %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++src'))} - - Python module: - Python-Modul: - %{JS: Util.fileName(value('Class'), Util.preferredSuffix('text/x-python'))} %{JS: Util.fileName(value('Class'), Util.preferredSuffix('text/x-python'))} + + Creates a header file that you can add to a C/C++ project. + Erzeugt eine Headerdatei, die Sie zu einem C/C++-Projekt hinzufügen können. + + + C/C++ Header File + C/C++-Header-Datei + + + Creates a source file that you can add to a C/C++ project. + Erzeugt eine Quelldatei, die Sie zu einem C/C++-Projekt hinzufügen können. + + + C/C++ Source File + C/C++-Quelldatei + "%{JS: Util.toNativeSeparators(value('TargetPath'))}" exists in the filesystem. "%{JS: Util.toNativeSeparators(value('TargetPath'))}" ist im Dateisystem vorhanden. + + Meson + Meson + Application (Qt) Anwendung (Qt) @@ -31478,6 +31708,14 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Select the Root Directory Wählen Sie das Wurzelverzeichnis + + Replacement for "%1" + Ersatz für "%1" + + + Project "%1" was configured for kit "%2" with id %3, which does not exist anymore. The new kit "%4" was created in its place, in an attempt not to lose custom project settings. + Das Projekt "%1" wurde für das Kit "%2" mit dem Bezeichner %3 konfiguriert. Dieses Kit existiert nicht mehr. Das neue Kit "%4" wurde an seiner Stelle erzeugt, um den Verlust von benutzerdefinierten Projekteinstellungen zu verhindern. + ProjectExplorer::Target @@ -31521,6 +31759,10 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. TextEditor::TextEditorWidget + + Cursor position: %1 + Position der Einfügemarke: %1 + Other annotations Andere Annotationen @@ -32201,6 +32443,10 @@ Senden selbst auch Zeit benötigt. Unable to create a uVision project template. Es kann keine uVision-Projektvorlage erzeugt werden. + + Unable to create an uVision project options template. + Es kann keine uVision-Projekteinstellungsvorlage erzeugt werden. + BareMetal::Internal::GdbServerProviderConfigWidget @@ -32348,8 +32594,8 @@ Senden selbst auch Zeit benötigt. CMakeProjectManager::CMakeSettingsPage - Version: %1<br>Supports fileApi: %2<br>Supports server-mode: %3 - Version: %1<br>Unterstützt fileApi: %2<br>Unterstützt Server-Modus: %3 + Version: %1<br>Supports fileApi: %2 + Version: %1<br>Unterstützt fileApi: %2 yes @@ -33545,6 +33791,10 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Change state to %1 In Zustand %1 ändern + + Activate FlowAction %1 + FlowAction %1 aktivieren + QmlDesigner::Internal::ConnectionView @@ -33579,6 +33829,14 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Open Connection Editor Verbindungseditor öffnen + + Open Binding Editor + Binding-Editor öffnen + + + Reset Property + Eigenschaft zurücksetzen + Add binding or connection. Datenbindung oder Verbindung hinzufügen. @@ -33882,6 +34140,14 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Ctrl+Shift+U Ctrl+Shift+U + + Rename Symbol Under Cursor + Symbol unter Einfügemarke umbenennen + + + Ctrl+Shift+R + Ctrl+Shift+R + Jump to File Under Cursor Gehe zu Datei unter Einfügemarke @@ -34890,6 +35156,10 @@ Allerdings führt die Anwendung der weniger strikten und erweiterten Regeln dazu Shape: Form: + + Intermediate points: + Dazwischen liegende Punkte: + none Keine @@ -35415,61 +35685,6 @@ Dies könnte Probleme während der Ausführung verursachen. Erstellung fehlgeschlagen. Testlauf wird abgebrochen. - - CMakeProjectManager::Internal::BuildDirManager - - Failed to create build directory "%1". - Das Build-Verzeichnis "%1" konnte nicht erstellt werden. - - - Failed to create temporary directory "%1". - Das temporäre Verzeichnis "%1" konnte nicht erstellt werden. - - - Parsing has been canceled. - Auswertung wurde abgebrochen. - - - The kit needs to define a CMake tool to parse this project. - Das Kit muss ein CMake-Werkzeug festlegen, um dieses Projekt auszuwerten. - - - CMakeLists.txt in source directory - CMakeLists.txt im Quellverzeichnis - - - CMakeCache.txt file not found. - Datei CMakeCache.txt nicht gefunden. - - - <removed> - <gelöscht> - - - Key - Schlüssel - - - %1 Project - %1-Projekt - - - Changed value - Geänderter Wert - - - The project has been changed outside of %1. - Das Projekt wurde außerhalb von %1 geändert. - - - Discard External Changes - Externe Änderungen verwerfen - - - Adapt %1 Project to Changes - %1-Projekt an Änderungen anpassen - - CMakeProjectManager::Internal::CMakeBuildStep @@ -35509,6 +35724,10 @@ Dies könnte Probleme während der Ausführung verursachen. CMakeProjectManager::Internal::CMakeBuildStepConfigWidget + + CMake arguments: + Kommandozeilenargumente für CMake: + Tool arguments: Toolparameter: @@ -35522,10 +35741,6 @@ Dies könnte Probleme während der Ausführung verursachen. CMakeProjectManager::CMakeBuildStepConfigWidget display name. Build - - <b>No build configuration found on this kit.</b> - <b>Für dieses Kit konnte keine Build-Konfiguration gefunden werden.</b> - CMakeProjectManager::ConfigModel @@ -36488,29 +36703,6 @@ Drücken Sie zusätzlich die Umschalttaste, wird ein Escape-Zeichen an der aktue Item horizontal verankern. - - ExtendedFunctionButton - - Reset - Zurücksetzen - - - Set Binding - Binding einstellen - - - Export Property as Alias - Eigenschaft als Alias exportieren - - - Insert Keyframe - Keyframe einfügen - - - Binding Editor - Binding-Editor - - Utils::EnvironmentDialog @@ -36522,7 +36714,7 @@ Drücken Sie zusätzlich die Umschalttaste, wird ein Escape-Zeichen an der aktue To set or change a variable, use VARIABLE=VALUE. Existing variables can be referenced in a VALUE with ${OTHER}. To clear a variable, put its name on a line with nothing else on it. -To disable a variable, prefix the line with "#" +To disable a variable, prefix the line with "#". Geben Sie eine Umgebungsvariable pro Zeile ein. Um eine Variable zu setzen oder zu ändern, benutzen Sie VARIABLE=WERT. Existierende Variablen können in einem WERT mit ${ANDERE} verwendet werden. @@ -36655,46 +36847,6 @@ Siehe auch die Einstellungen für Google Test. Die Dokumentationsdatei "%1" kann nicht gelesen werden: %2. - - Beautifier::Internal::ArtisticStyle::ArtisticStyle - - Artistic Style - Artistic Style - - - &Artistic Style - &Artistic Style - - - - Beautifier::Internal::ClangFormat::ClangFormat - - ClangFormat - ClangFormat - - - &ClangFormat - &ClangFormat - - - - Beautifier::Internal::ClangFormat::ClangFormatSettings - - No description available. - Keine Beschreibung verfügbar. - - - - Beautifier::Internal::Uncrustify::Uncrustify - - Uncrustify - Uncrustify - - - &Uncrustify - &Uncrustify - - ClangCodeModel::Internal::ClangDiagnosticManager @@ -36705,8 +36857,12 @@ Siehe auch die Einstellungen für Google Test. CMakeProjectManager::Internal::CMakeBuildConfiguration - CMake configuration set by the kit was overridden in the project. - Die im Kit festgelegte CMake-Einstellung wurde im Projekt überschrieben. + Changing Build Directory + Build-Verzeichnis ändern + + + Change the build directory and start with a basic CMake configuration? + Wollen Sie das Build-Verzeichnis ändern und mit einer grundlegenden CMake-Konfiguration beginnen? Minimum Size Release @@ -38264,6 +38420,10 @@ Fehler: %5 Reset Default Vorgabe zurücksetzen + + Default + Vorgabe + qmt::Exception @@ -38351,10 +38511,6 @@ Fehler: %5 Failed to find application directory. Anwendungsverzeichnis wurde nicht gefunden. - - Cannot find or copy C++ debug server. - Kann C++-Debug-Server nicht finden oder kopieren. - Failed to forward QML debugging ports. Die Ports des QML-Debuggers konnten nicht übermittelt werden. @@ -38379,6 +38535,18 @@ Fehler: %5 Failed to start debugger server. Der Debug-Server konnte nicht gestartet werden. + + Cannot find C++ debug server in NDK installation + In der NDK-Installation wurde kein C++-Debug-Server gefunden + + + The lldb-server binary has not been found. Maybe sdk_definitions.json does not contain 'lldb;x.y' as sdk_essential_package or LLDB was not installed. + Die Binärdateien des lldb-Servers wurde nicht gefunden. Vielleicht ist 'lldb;x.y' nicht als sdk_essential_package in sdk_definitions.json enthalten oder LLDB ist nicht installiert. + + + Cannot copy C++ debug server. + C++-Debug-Server kann nicht kopiert werden. + Failed to forward C++ debugging ports. Die Ports des C++-Debuggers konnten nicht übermittelt werden. @@ -38388,13 +38556,6 @@ Fehler: %5 "%1" beendet. - - AndroidToolManager - - Could not start process "%1 %2" - Der Prozess "%1 %2" konnte nicht gestartet werden - - AutoTest @@ -38674,165 +38835,8 @@ Fehler: %5 Vom Kit verlangter Wert: %1 - - CMakeProjectManager::Internal::ServerMode - - Running "%1" in %2. - Führe "%1" in %2 aus. - - - Running "%1" failed: Timeout waiting for pipe "%2". - "%1" konnte nicht ausgeführt werden: Zeitüberschreitung beim Warten auf Pipe "%2". - - - CMake process "%1" crashed. - Der CMake-Prozess "%1" ist abgestürzt. - - - CMake process "%1" quit with exit code %2. - Der CMake-Prozess "%1" wurde mit Rückgabewert %2 beendet. - - - CMake process "%1" quit normally. - Der CMake-Prozess "%1" wurde normal beendet. - - - Failed to parse JSON from CMake server. - JSON vom CMake-Server konnte nicht ausgewertet werden. - - - JSON data from CMake server was not a JSON object. - JSON-Daten vom CMake-Server waren kein JSON-Objekt. - - - Unexpected hello received from CMake server. - Unerwartetes "hello" vom CMake-Server empfangen. - - - Unexpected type "%1" received while waiting for "hello". - Unerwarteten Typ "%1" empfangen, als auf "hello" gewartet wurde. - - - Received a reply even though no request is open. - Antwort empfangen, obwohl keine Anfrage offen ist. - - - Received a reply to a request of type "%1", when a request of type "%2" was sent. - Antwort auf Anfrage vom Typ "%1" empfangen, als eine Anfrage vom Typ "%2" gesendet wurde. - - - Received a reply with cookie "%1", when "%2" was expected. - Antwort mit Cookie "%1" empfangen statt des erwarteten "%2". - - - An error was reported even though no request is open. - Ein Fehler wurde gemeldet obwohl keine Anfrage offen ist. - - - Received an error in response to a request of type "%1", when a request of type "%2" was sent. - Fehler als Antwort auf eine Anfrage vom Typ "%1" empfangen, als eine Anfrage vom Typ "%2" gesendet wurde. - - - Received an error with cookie "%1", when "%2" was expected. - Fehler mit Cookie "%1" empfangen statt des erwarteten "%2". - - - Received a message in response to a request of type "%1", when a request of type "%2" was sent. - Nachricht als Antwort auf eine Anfrage vom Typ "%1" empfangen, als eine Anfrage vom Typ "%2" gesendet wurde. - - - Received a message with cookie "%1", when "%2" was expected. - Nachricht mit Cookie "%1" empfangen statt des erwarteten "%2". - - - Received a progress report in response to a request of type "%1", when a request of type "%2" was sent. - Fortschrittsbericht als Antwort auf eine Anfrage vom Typ "%1" empfangen, als eine Anfrage vom Typ "%2" gesendet wurde. - - - Received a progress report with cookie "%1", when "%2" was expected. - Fortschrittsbericht mit Cookie "%1" empfangen statt des erwarteten "%2". - - - Received a signal without a name. - Signal ohne Namen empfangen. - - - Received a signal in reply to a request. - Signal als Antwort auf Anfrage empfangen. - - - - CMakeProjectManager::Internal::ServerModeReader - - Parsing of CMake project failed: Connection to CMake server lost. - Auswerten des CMake-Projekts fehlgeschlagen: Verbindung zum CMake-Server verloren. - - - Starting to parse CMake project, using: "%1". - Beginne das CMake-Projekt auszuwerten, mithilfe von "%1". - - - Starting to parse CMake project. - Beginne das CMake-Projekt auszuwerten. - - - Configuring "%1" - Konfiguriere "%1" - - - <Build Directory> - <Build-Verzeichnis> - - - <Other Locations> - <Andere Orte> - - - CMake Project was parsed successfully. - Das CMake-Projekt wurde erfolgreich ausgewertet. - - - CMake Project parsing failed. - Die Auswertung des CMake-Projekts ist fehlgeschlagen. - - - %1 in line %2 - %1 in Zeile %2 - - - %1 - %1 - - - %1 in %2:%3 - %1 in %2:%3 - - - %1 in %2 - %1 in %2 - - - Target Definition - Zieldefinition - - - <Headers> - <Header-Dateien> - - - - CMakeProjectManager::Internal::TeaLeafReader - - The build directory is not for %1 but for %2 - Das Erstellungsverzeichnis gehört nicht zu %1 sondern zu %2 - - Core::ICore - - Settings... - Einstellungen... - (%1) (%1) @@ -39170,6 +39174,14 @@ Einzelschritt in das Modul und das Setzen von Haltepunkten nach Datei und Zeilen Revert Chunk... Diese Änderung rückgängig machen... + + <b>Error:</b> Could not decode "%1" with "%2"-encoding. + <b>Fehler:</b> Die Datei "%1" kann nicht mit der Zeichenkodierung "%2" dargestellt werden. + + + Select Encoding + Zeichenkodierung auswählen + Gerrit::Internal::GerritRemoteChooser @@ -39267,13 +39279,6 @@ Ablaufdatum: %3 Der Nim-Compiler existiert nicht. - - Nim::NimToolChainFactory - - Nim - Nim - - Nim::NimToolChainConfigWidget @@ -39292,13 +39297,6 @@ Ablaufdatum: %3 Leerzeichen ignorieren - - ProjectExplorer::BuildStep - - Build Step - Erstellungsschritt - - ProjectExplorer::PortsGatherer @@ -39424,16 +39422,16 @@ Ablaufdatum: %3 Klicken zum Aktivieren - Enable Kit "%1" for Project "%2" - Kit "%1" für das Projekt "%2" aktivieren + Enable Kit for Project "%2" + Kit für das Projekt "%2" aktivieren - Enable Kit "%1" for All Projects - Kit "%1" für alle Projekte aktivieren + Enable Kit for All Projects + Kit für alle Projekte aktivieren - Disable Kit "%1" for Project "%2" - Kit "%1" für das Projekt "%2" deaktivieren + Disable Kit for Project "%2" + Kit für das Projekt "%2" deaktivieren Cancel Build and Disable Kit in This Project @@ -39456,8 +39454,8 @@ Ablaufdatum: %3 Möchten Sie die Erstellung abbrechen und das Kit entfernen? - Disable Kit "%1" for All Projects - Kit "%1" für alle Projekte deaktivieren + Disable Kit for All Projects + Kit für alle Projekte deaktivieren Copy Steps From Another Kit... @@ -41108,12 +41106,52 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Log Change Line - Zeile in Änderungslogs + Geänderte Zeile in Log Applied to lines describing changes in VCS log. Wird auf Zeilen angewendet, die Änderungen in einem Versionskontroll-Log beschreiben. + + Log Author Name + Autorenname in Log + + + Applied to author names in VCS log. + Wird auf die Namen von Autoren in einem Versionskontroll-Log angewendet. + + + Log Commit Date + Datum in Log + + + Applied to commit dates in VCS log. + Wird auf Datumsangaben in einem Versionskontroll-Log angewendet. + + + Log Commit Hash + Commit-Hash in Log + + + Applied to commit hashes in VCS log. + Wird auf Hashwerte von Commits in einem Versionskontroll-Log angewendet. + + + Log Decoration + Dekoration in Log + + + Applied to commit decorations in VCS log. + Wird auf Dekorationen in einem Versionskontroll-Log angewendet. + + + Log Commit Subject + Titel in Log + + + Applied to commit subjects in VCS log. + Wird auf Titel von Commits in einem Versionskontroll-Log angewendet. + Error Fehler @@ -41390,10 +41428,6 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Advanced Options... Erweiterte Optionen... - - Native SDK Manager... - Nativer SDK-Manager... - Cancel Abbrechen @@ -41418,6 +41452,14 @@ SDK-Manager arbeitet. Android SDK Changes Android SDK-Änderungen + + Qt Creator couldn't find the following essential packages: "%1". +Install them manually after the current operation is done. + + Qt Creator konnte die folgenden notwendigen Pakete nicht finden: "%1". +Bitte installieren Sie sie selbst, nachdem die aktuelle Aktion abgeschlossen wurde. + + %n Android SDK packages shall be updated. @@ -41431,14 +41473,6 @@ SDK-Manager arbeitet. [Pakete, die deinstalliert werden sollen:] - - Native SDK Manager Not Available - Der Native SDK-Manager ist nicht verfügbar - - - SDK manager UI tool is not available in the installed SDK tools (version %1). Use the command line tool "sdkmanager" for advanced SDK management. - Der grafische SDK-Manager ist in den installierten SDK-Tools nicht verfügbar (Version %1). Benutzen Sie das Kommandozeilenprogramm "sdkmanager" für erweitertes SDK-Management. - Review Android SDK package licenses that have not been accepted? Please note that the installation and use of Android SDK packages may fail if respective licenses are not accepted. @@ -41505,10 +41539,6 @@ Cancelling pending operations... Breche ausstehende Operationen ab... - - SDK manager is not available with the current version of SDK tools. Use native SDK manager. - SDK-Manager ist mit der aktuellen Version der SDK-Tools nicht verfügbar. Benutzen Sie den nativen SDK-Manager. - Android::Internal::AndroidSdkManager @@ -41818,13 +41848,6 @@ Breche ausstehende Operationen ab... Deployment auf Gerät - - Android::Internal::AndroidPackageInstallationStepWidget - - Make install - Make install - - Bookmarks::Internal::BookmarkFilter @@ -41838,6 +41861,10 @@ Breche ausstehende Operationen ab... %1 bytes %1 Bytes + + Value: + Wert: + Core::Internal::JavaScriptFilter @@ -41923,6 +41950,14 @@ Breche ausstehende Operationen ab... Close Tab Reiter schließen + + IncrediBuild for Windows + IncrediBuild für Windows + + + IncrediBuild for Linux + IncrediBuild für Linux + CppEditor::CppQuickFixFactory @@ -41979,6 +42014,10 @@ Breche ausstehende Operationen ab... Font Files Schriftart-Dateien + + Add Custom Effect + Benutzerdefinierten Effekt hinzufügen + AddAnalysisMessageSuppressionComment @@ -42083,6 +42122,11 @@ Breche ausstehende Operationen ab... group:'C++' trigger:'struct' template + + (type name READ name WRITE setName NOTIFY nameChanged) + group:'C++' trigger:'Q_PROPERTY' + (type name READ name WRITE setName NOTIFY nameChanged) + with targets group:'QML' trigger:'NumberAnimation' @@ -42302,6 +42346,12 @@ Die Trace-Daten sind verloren. Activity manager start options: Startoptionen des Aktivitätsmanagers: + + If the "am start" options conflict, the application might not start. +Qt Creator uses: am start -n <package_name>/<Activity_name> [-D]. + Wenn die Optionen für "am start" widersprüchlich sind, könnte die Anwendung nicht starten. +Qt Creator benutzt: am start -n <Paketname>/<Aktivitätsname> [-D]. + Shell commands to run on Android device before application launch. Shell-Kommandos, die vor dem Start der Anwendung auf dem Android-Gerät ausgeführt werden. @@ -42310,10 +42360,6 @@ Die Trace-Daten sind verloren. Shell commands to run on Android device after application quits. Shell-Kommandos, die nach dem Beenden der Anwendung auf dem Android-Gerät ausgeführt werden. - - If the "am start" options conflict, the application might not start. - Wenn die Optionen für "am start" widersprüchlich sind, könnte die Anwendung nicht starten. - ClangCodeModel::Internal::ClangCodeModelPlugin @@ -42438,6 +42484,10 @@ Ausgabe: Fixit status: Zustand der Korrekturen: + + Steps: + Schritte: + ClangTools::ExplainingStep @@ -42456,6 +42506,18 @@ Ausgabe: Filter... Filter... + + Clear Filter + Filter leeren + + + Filter for This Diagnostic Kind + Nach dieser Art von Einträgen filtern + + + Filter out This Diagnostic Kind + Diese Art von Einträgen herausfiltern + Web Page Webseite @@ -42471,6 +42533,10 @@ Ausgabe: File "%1" does not exist or is not readable. Die Datei "%1" fehlt oder ist nicht lesbar. + + Error: Failed to parse YAML file "%1": %2. + Fehler: Die YAML-Datei "%1" konnte nicht ausgewertet werden: %2. + ClangTools::Internal::ClangToolsOptionsPage @@ -42485,6 +42551,10 @@ Ausgabe: Clang Tools Clang-Werkzeuge + + Analyze File + Datei analysieren + ClangTools::Internal::SuppressedDiagnosticsModel @@ -42528,13 +42598,6 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?<Keine Symbole> - - Git::Internal::GitDiffEditorController - - <None> - <Keiner> - - ImageViewer::Internal::MultiExportDialog @@ -42610,6 +42673,82 @@ Möchten Sie sie überschreiben? No kits are enabled for this project. Enable kits in the "Projects" mode. Für dieses Projekt sind keine Kits ausgewählt. Wählen Sie Kits im Modus "Projekte" aus. + + Rename More Files? + Weitere Dateien umbenennen? + + + Would you like to rename these files as well? + %1 + Möchten Sie diese Dateien auch umbenennen? + %1 + + + Choose Drop Action + Aktion zum Ablegen wählen + + + You just dragged some files from one project node to another. +What should Qt Creator do now? + Sie haben gerade eine oder mehrere Dateien von einem Projektknoten zu einem anderen gezogen. +Was soll Qt Creator tun? + + + Copy Only File References + Nur Datei-Referenzen kopieren + + + Move Only File References + Nur Datei-Referenzen verschieben + + + Copy file references and files + Datei-Referenzen und Dateien kopieren + + + Move file references and files + Datei-Referenzen und Dateien verschieben + + + Target directory: + Zielverzeichnis: + + + Copy File References + Datei-Referenzen kopieren + + + Move File References + Datei-Referenzen verschieben + + + Not all operations finished successfully. + Nicht alle Operationen wurden erfolgreich abgeschlossen. + + + The following files could not be copied or moved: + Die folgenden Dateien konnten nicht kopiert oder verschoben werden: + + + The following files could not be removed from the project file: + Die folgenden Dateien konnten nicht aus der Projektdatei entfernt werden: + + + The following files could not be added to the project file: + Die folgenden Dateien konnten nicht zur Projektdatei hinzugefügt werden: + + + The following files could not be deleted: + Die folgenden Dateien konnten gelöscht werden: + + + A version control operation failed for the following files. Please check your repository. + Für die folgenden Dateien ist eine Versionskontroll-Operation gescheitert. Bitte prüfen Sie Ihr Repository. + + + Failure Updating Project + Fehler beim Aktualisieren des Projekts + ProjectExplorer::ExecutableAspect @@ -43182,10 +43321,6 @@ Speichern fehlgeschlagen. Android::Internal::AndroidBuildApkWidget - - Android - Android - Create Templates Vorlagen erstellen @@ -43274,14 +43409,6 @@ Speichern fehlgeschlagen. Verbose output Ausführliche Ausgabe - - Use Ministro service to install Qt - Verwende den Ministro-Dienst, um Qt zu installieren - - - Uses the external Ministro application to download and maintain Qt libraries. - Verwendet die externe Ministro-Anwendung, um die Qt-Bibliotheken herunterzuladen und zu verwalten. - Build .aab (Android App Bundle) .aab (Android App Bundle) erstellen @@ -43351,22 +43478,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Create Android Template Files Wizard Assistent zum Erzeugen von Android-Vorlagendateien - - Overwrite %1 file - Überschreibe Datei %1 - - - Overwrite existing "%1"? - Soll "%1" überschrieben werden? - - - File Creation Error - Fehler beim Erstellen der Datei - - - Could not copy file "%1" to "%2". - Die Datei "%1" konnte nicht nach "%2" kopiert werden. - Project File not Updated Projekt-Datei nicht aktualisiert @@ -43390,13 +43501,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Verwendete .clang-format-Konfigurationsdatei öffnen - - CodePaster::PasteCodeDotXyzProtocol - - %1: %2 - %1: %2 - - Cppcheck::Internal::CppcheckOptionsPage @@ -43708,10 +43812,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Unexpectedly finished. Unerwartet beendet. - - Find References with %1 for: - Referenzen mit %1 finden für: - LanguageClient::BaseSettingsWidget @@ -43812,13 +43912,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni <b>Make:</b> %1 konnte in der Umgebung nicht gefunden werden. - - ProjectExplorer::Internal::ClangClToolChainFactory - - clang-cl - clang-cl - - QmakeProjectManager::QmakeMakeStep @@ -44599,7 +44692,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Android::Internal - Deploy to Android device + Deploy to Android Device Deployment auf Android-Gerät @@ -44879,6 +44972,10 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni ProjectExplorer::Internal::MsvcToolChain + + MSVC + MSVC + Failed to retrieve MSVC Environment from "%1": %2 @@ -45411,10 +45508,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e No Data Loaded Keine Daten geladen - - The profiler did not produce any samples. Make sure that you are running a recent Linux kernel and that the "perf" utility is available and generates useful call graphs. - Der Profiler hat keine Samples erzeugt. Stellen Sie sicher, dass Sie einen aktuellen Linux-Kernel verwenden, das Programm "perf" verfügbar ist und nutzbare Aufrufgraphen erzeugt. - A performance analysis is still in progress. Eine Leistungsanalyse läuft noch. @@ -45611,6 +45704,14 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Reset Zurücksetzen + + Import + Import + + + Export + Export + RangeDetails @@ -45956,6 +46057,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Format Format + + Mipmap + MIP Map + Samples Samples @@ -46569,14 +46674,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Name Name - - Start - Anfang - - - Size - Größe - BareMetal::Internal::Uv::DeviceSelectorToolPanel @@ -46592,8 +46689,8 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Anbieter: - Family: - Name: + Package: + Paket: Description: @@ -46603,6 +46700,18 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Memory: Speicher: + + Peripheral description files (*.svd) + Peripherie-Beschreibungsdatei (*.svd) + + + Select Peripheral Description File + Wählen Sie eine Peripherie-Beschreibungsdatei + + + Peripheral description file: + Peripherie-Beschreibungsdatei: + BareMetal::Internal::Uv::DriverSelectionModel @@ -46631,6 +46740,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e &Compiler path: &Compiler-Pfad: + + Platform codegen flags: + Plattformspezifische Optionen für codegen: + &ABI: &ABI: @@ -46647,40 +46760,12 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Name: - - KeilToolchain - - KEIL %1 (%2, %3) - KEIL %1 (%2, %3) - - - - BareMetal::Internal::KeilToolchainFactory - - KEIL - KEIL - - - - BareMetal::Internal::KeilToolchainConfigWidget - - &Compiler path: - &Compiler-Pfad: - - - &ABI: - &ABI: - - SdccToolChain SDCC %1 (%2, %3) SDCC %1 (%2, %3) - - - BareMetal::Internal::SdccToolChainFactory SDCC SDCC @@ -46707,6 +46792,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Artistic Style Artistic Style + + &Artistic Style + &Artistic Style + Beautifier::Internal::ClangFormat @@ -46722,6 +46811,14 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Uncrustify Uncrustify + + &ClangFormat + &ClangFormat + + + ClangFormat + ClangFormat + Qdb::Internal::QdbDevice @@ -46729,6 +46826,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e WizardPage WizardPage + + Device name: + Gerätename: + Qdb::Internal::QdbMakeDefaultAppService @@ -46797,13 +46898,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Clazy - - ClangTools::Internal::ClazyPluginRunner - - Clazy - Clazy - - ClangTools::Internal::ClangTool @@ -47226,6 +47320,26 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Scan "%1" project tree Durchsuche "%1"-Projektbaum + + The kit needs to define a CMake tool to parse this project. + Das Kit muss ein CMake-Werkzeug festlegen, um dieses Projekt auszuwerten. + + + Apply configuration changes? + Konfigurationsänderungen anwenden? + + + Failed to create build directory "%1". + Das Build-Verzeichnis "%1" konnte nicht erstellt werden. + + + Failed to create temporary directory "%1". + Das temporäre Verzeichnis "%1" konnte nicht erstellt werden. + + + CMakeCache.txt file not found. + Datei CMakeCache.txt nicht gefunden. + CMakeProjectManager::Internal::CMakeKitAspect @@ -47244,10 +47358,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e The CMake Tool to use when building a project with CMake.<br>This setting is ignored when using other build systems. Das zum Erstellen eines Projektes mit CMake zu verwendende CMake-Werkzeug.<br>Diese Einstellung wird bei der Verwendung anderer Build-Systeme ignoriert. - - CMake version %1 is unsupported. Please update to version 3.0 or later. - CMake-Version %1 wird nicht unterstützt. Bitte aktualisieren Sie auf Version 3.0 oder neuer. - CMake CMake @@ -47322,10 +47432,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Toolset is not supported by the selected CMake generator. Der ausgewählte CMake-Generator unterstützt das Toolset nicht. - - The selected CMake binary has no server-mode and the CMake generator does not generate a CodeBlocks file. %1 will not be able to parse CMake projects. - Die ausgewählte ausführbare CMake-Datei hat keinen Server-Modus und der CMake-Generator erzeugt keine CodeBlocks-Datei. %1 wird keine CMake-Projekte auswerten können. - <Use Default Generator> <Benutze Standardgenerator> @@ -47966,10 +48072,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e %1.%2 %1.%2 - - Unknown error - Unbekannter Fehler - Debugger::Internal::UvscEngine @@ -48433,6 +48535,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Merge Tool Merge-Tool + + Git Bash + Git Bash + Actions on Commits... Aktionen mit Commits... @@ -49849,4 +49955,1012 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Zeichensatz && Farben + + CatchTestSettingsPage + + Turns failures into debugger breakpoints. + Erzeugt aus Fehlern Debugger-Haltepunkte. + + + Break on failure while debugging + Beim Debuggen an Fehlern anhalten + + + ms + ms + + + + Beautifier::Internal::ArtisticStyleOptionsPage + + Configuration + Konfiguration + + + Artistic Style command: + Ausführbare Datei von Artistic Style: + + + Restrict to MIME types: + Auf MIME-Typen beschränken: + + + Options + Einstellungen + + + Use file *.astylerc defined in project files + Verwende Datei *.astylerc wie in Projektdateien definiert + + + Use specific config file: + Bestimmte Konfigurationsdatei verwenden: + + + Use file .astylerc or astylerc in HOME + HOME is replaced by the user's home directory + Verwende .astylerc oder astylerc in HOME + + + Use customized style: + Verwende angepassten Stil: + + + + Beautifier::Internal::ClangFormatOptionsPage + + Options + Einstellungen + + + Use customized style: + Verwende angepassten Stil: + + + Use predefined style: + Verwende vorgegebenen Stil: + + + Fallback style: + Fallback-Stil: + + + Configuration + Konfiguration + + + Clang Format command: + Ausführbare Datei von Clang Format: + + + Restrict to MIME types: + Auf MIME-Typen beschränken: + + + + Beautifier::Internal::UncrustifyOptionsPage + + Configuration + Konfiguration + + + Uncrustify command: + Ausführbare Datei von Uncrustify: + + + Restrict to MIME types: + Auf MIME-Typen beschränken: + + + Options + Einstellungen + + + Use file uncrustify.cfg defined in project files + Verwende Datei uncrustify.cfg wie in Projektdateien definiert + + + Use file specific uncrustify.cfg + Dateispezifische uncrustify.cfg verwenden + + + Use file uncrustify.cfg in HOME + HOME is replaced by the user's home directory + Verwende uncrustify.cfg in HOME + + + Use customized style: + Verwende angepassten Stil: + + + For action Format Selected Text + Für die Aktion "Formatiere selektierten Text" + + + Format entire file if no text was selected + Formatiere die ganze Datei falls kein Text selektiert ist + + + + IncrediBuild::Internal::BuildConsoleBuildStep + + Miscellaneous + Sonstige Einstellungen + + + Make arguments: + Kommandozeilenargumente für make: + + + + IncrediBuild::Internal::IBConsoleBuildStep + + Make arguments: + Kommandozeilenargumente für make: + + + + MesonBuildSettingsWidget + + Apply Configuration Changes + Konfigurationsänderungen anwenden + + + Filter + Filter + + + + MesonBuildStepConfigWidget + + Tool arguments: + Toolparameter: + + + Targets: + Ziele: + + + + ToolItemSettings + + Name: + Name: + + + Path: + Pfad: + + + + ToolsSettingsWidget + + Add + Hinzufügen + + + Clone + Klonen + + + Remove + Entfernen + + + Make Default + Als Vorgabe setzen + + + + QmlDesigner::GlobalAnnotationEditorDialog + + Annotation + Annotation + + + + QmlDesigner::HyperlinkDialog + + Link + Verweis + + + Anchor + Anker + + + + QmlDesigner::TransitionForm + + Timeline Settings + Timeline-Einstellungen + + + From + Von + + + To + Bis + + + Invalid Id + Ungültige ID + + + %1 is an invalid id. + %1 ist keine gültige ID. + + + %1 already exists. + %1 existiert bereits. + + + + AlignDistributeSection + + Align + Ausrichtung + + + Align objects + Objekte ausrichten + + + Align left edges. + Linke Ränder ausrichten. + + + Align horizontal centers. + Horizontale Zentren ausrichten. + + + Align right edges. + Rechte Ränder ausrichten. + + + Align top edges. + Obere Ränder ausrichten. + + + Align vertical centers. + Vertikale Zentren ausrichten. + + + Align bottom edges. + Untere Ränder ausrichten. + + + Distribute objects + Objekte verteilen + + + Distribute left edges. + Linke Ränder verteilen. + + + Distribute horizontal centers. + Horizontale Zentren verteilen. + + + Distribute right edges. + Rechte Ränder verteilen. + + + Distribute top edges. + Obere Ränder verteilen. + + + Distribute vertical centers. + Vertikale Zentren verteilen. + + + Distribute bottom edges. + Untere Ränder verteilen. + + + Distribute spacing + Abstand einteilen + + + Distribute spacing horizontally. + Abstand horizontal einteilen. + + + Distribute spacing vertically. + Abstand vertikal einteilen. + + + Align to + Ausrichten an + + + Key object + Key-Objekt + + + Warning + Warnung + + + - The selection contains the root item. + - Die Auswahl enthält das Wurzel-Item. + + + - The selection contains a non visual item. + - Die Auswahl enthält ein nicht sichtbares Item. + + + - An item in the selection uses anchors. + - Ein Item der Auswahl benutzt Anchor. + + + + AnimatedImageSpecifics + + Speed + Geschwindigkeit + + + + Utils::InfoBarDisplay + + &Show Details + &Details anzeigen + + + Do Not Show Again + Nicht noch einmal anzeigen + + + Close + Schließen + + + + Android::Internal::AndroidManifestEditorIconContainerWidget + + Low DPI icon + Symbol mit geringer Auflösung + + + Select low DPI icon. + Symbol für geringe Auflösung auswählen. + + + Medium DPI icon + Symbol mit mittlerer Auflösung + + + Select medium DPI icon. + Symbol für mittlere Auflösung auswählen. + + + High DPI icon + Symbol mit hoher Auflösung + + + Select high DPI icon. + Symbol für hohe Auflösung auswählen. + + + + Android::Internal::AndroidServiceWidget + + Add + Hinzufügen + + + Remove + Entfernen + + + + Android::Internal::AndroidToolChain + + Android Clang + Android Clang + + + + Android::Internal::SplashIconContainerWidget + + Splash screen + Startbildschirm + + + + CatchTreeItem + + parameterized + parametrisiert + + + fixture + festgelegt + + + + BareMetal::Internal::JLinkUvscAdapterOptionsWidget + + Port: + Port: + + + Speed: + Geschwindigkeit: + + + JTAG + JTAG + + + SWD + SWD + + + 50MHz + 50MHz + + + 33MHz + 33MHz + + + 25MHz + 25MHz + + + 20MHz + 20MHz + + + 10MHz + 10MHz + + + 5MHz + 5MHz + + + 3MHz + 3MHz + + + 2MHz + 2MHz + + + 1MHz + 1MHz + + + 500kHz + 500kHz + + + 200kHz + 200kHz + + + 100kHz + 100kHz + + + + KeilToolChain + + KEIL %1 (%2, %3) + KEIL %1 (%2, %3) + + + KEIL + KEIL + + + + BareMetal::Internal::KeilToolChainConfigWidget + + &Compiler path: + &Compiler-Pfad: + + + Platform codegen flags: + Plattformspezifische Optionen für codegen: + + + &ABI: + &ABI: + + + + Beautifier::Internal + + Artistic Style + Artistic Style + + + Uncrustify + Uncrustify + + + + Beautifier::Internal::ClangFormatSettings + + No description available. + Keine Beschreibung verfügbar. + + + + Beautifier::Internal::Uncrustify + + &Uncrustify + &Uncrustify + + + + CMakeProjectManager::Internal::FileApiReader + + Parsing has been canceled. + Auswertung wurde abgebrochen. + + + + CMakeProjectManager::Internal::ProjectTreeHelper + + <Build Directory> + <Build-Verzeichnis> + + + <Other Locations> + <Andere Orte> + + + <Headers> + <Header-Dateien> + + + + Core::CodecSelector + + Text Encoding + Text-Zeichenkodierung + + + The following encodings are likely to fit: + Die folgenden Zeichenkodierungen scheinen der Datei zu entsprechen: + + + Select encoding for "%1".%2 + Auswahl der Zeichenkodierung für "%1".%2 + + + Reload with Encoding + Mit Zeichenkodierung neu laden + + + Save with Encoding + Mit Zeichenkodierung speichern + + + + Core::Internal::ShortcutInput + + Key sequence: + Tastenfolge: + + + Use "Cmd", "Opt", "Ctrl", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A". + Benutzen Sie "Cmd", "Opt", "Ctrl", und "Shift" für Hilfstasten. Benutzen Sie "Escape", "Backspace", "Delete", "Insert", "Home" und so weiter für Sondertasten. Kombinieren Sie einzelne Tasten mit "+" und kombinieren Sie mehrere Tastenkombinationen mit "," zu einer Tastenfolge. Wenn der Benutzer etwa die Strg- und Umschalttasten gedrückt halten muss, während er Escape drückt, um danach alle Tasten zu lösen und A zu drücken, geben Sie "Ctrl+Shift+Escape,A" ein. + + + Use "Ctrl", "Alt", "Meta", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A". + Benutzen Sie "Ctrl", "Alt", "Meta", und "Shift" für Hilfstasten. Benutzen Sie "Escape", "Backspace", "Delete", "Insert", "Home" und so weiter für Sondertasten. Kombinieren Sie einzelne Tasten mit "+" und kombinieren Sie mehrere Tastenkombinationen mit "," zu einer Tastenfolge. Wenn der Benutzer etwa die Strg- und Umschalttasten gedrückt halten muss, während er Escape drückt, um danach alle Tasten zu lösen und A zu drücken, geben Sie "Ctrl+Shift+Escape,A" ein. + + + Enter key sequence as text + Geben Sie die Tastenfolge als Text ein + + + + Core::Internal::DocumentManagerPrivate + + Ctrl+Shift+S + Ctrl+Shift+S + + + Save A&ll + A&lles speichern + + + + Core::Internal::PluginInstallWizard + + Cancel + Abbrechen + + + Summary + Zusammenfassung + + + Overwrite + Überschreiben + + + Failed to Write File + Datei konnte nicht geschrieben werden + + + + CodePaster::DPasteDotComProtocol + + %1: %2 + %1: %2 + + + + IncrediBuild::Internal::BuildConsoleStepConfigWidget + + IncrediBuild for Windows + IncrediBuild für Windows + + + + CommandBuilder + + CMake + CMake + + + + IncrediBuild::Internal::IBConsoleStepConfigWidget + + IncrediBuild for Linux + IncrediBuild für Linux + + + + MakeCommandBuilder + + Make + Make + + + + SymbolSupport + + Find References with %1 for: + Referenzen mit %1 finden für: + + + + MesonProjectManager::Internal::MesonActionsManager + + Configure + Konfigurieren + + + Build + Erstellen + + + Build "%1" + "%1" erstellen + + + + MesonProjectManager::Internal::MesonBuildSettingsWidget + + Meson + Meson + + + + MesonProjectManager::Internal::MesonBuildStepConfigWidget + + Build + MesonProjectManager::MesonBuildStepConfigWidget display name. + Erstellen + + + + MesonProjectManager::Internal::BuidOptionsModel + + Key + Schlüssel + + + Value + Wert + + + + MesonProjectManager::Internal::MesonProcess + + Configuring "%1". + Konfiguriere "%1" + + + The process failed to start. + Der Prozess konnte nicht gestartet werden. + + + Either the invoked program "%1" is missing, or you may have insufficient permissions to invoke the program. + Entweder ist das aufgerufene Programm "%1" nicht vorhanden oder Ihre Rechte reichen nicht aus, um dieses Programm aufzurufen. + + + The process was ended forcefully. + Der Prozess wurde gestoppt. + + + Process timed out. + Der Prozess brauchte zu lange. + + + An error occurred when attempting to write to the process. For example, the process may not be running, or it may have closed its input channel. + Ein Fehler trat auf beim Versuch, zum Prozess zu schreiben. Möglicherweise läuft der Prozess nicht oder hat seinen Eingabekanal geschlossen. + + + An error occurred when attempting to read from the process. For example, the process may not be running. + Ein Fehler trat auf beim Versuch, vom Prozess zu lesen. Möglicherweise läuft der Prozess nicht. + + + An unknown error in the process occurred. + Im Prozess trat ein unbekannter Fehler auf. + + + Running %1 in %2. + Führe %1 in %2 aus. + + + Executable does not exist: %1 + Ausführbare Datei existiert nicht: %1 + + + + MesonProjectManager::Internal::MesonProject + + No compilers set in kit. + Im Kit sind keine Compiler eingerichtet. + + + + MesonProjectManager::Internal::NinjaBuildStep + + Meson + Meson + + + + MesonProjectManager::Internal::GeneralSettingsPage + + General + Allgemein + + + + MesonProjectManager::Internal::MesonToolKitAspect + + Meson + Meson + + + Unconfigured + Nicht konfiguriert + + + + MesonProjectManager::Internal::NinjaToolKitAspect + + Unconfigured + Nicht konfiguriert + + + + MesonProjectManager::Internal::ToolsSettingsPage + + Name + Name + + + Location + Pfad + + + Auto-detected + Automatisch bestimmt + + + Manual + Benutzerdefiniert + + + Tools + Werkzeuge + + + Version: %1 + Version: %1 + + + Clone of %1 + Kopie von %1 + + + + MesonProjectManager::MesonToolManager + + Meson + Meson + + + + Nim::NimToolChain + + Nim + Nim + + + + ProjectExplorer::Internal::BuildEnvironmentWidget + + Build Environment + Build-Umgebung + + + Clear system environment + Systemumgebung löschen + + + + ProjectExplorer::Internal::CustomParsersSettingsPage + + Add... + Hinzufügen... + + + Remove + Entfernen + + + + EnvironmentWidget + + Add ... + Hinzufügen... + + + Remove + Entfernen + + + Edit... + Bearbeiten... + + + Choose Directory + Verzeichnis wählen + + + + ProjectExplorer::ClangToolChain + + Clang + Clang + + + + ProjectExplorer::MingwToolChain + + MinGW + MinGW + + + + ProjectExplorer::LinuxIccToolChain + + ICC + ICC + + + + ProjectExplorer::Internal::ClangClToolChain + + clang-cl + clang-cl + + + + ProjectEnvironmentWidget + + Project Environment + Projektumgebung + + + + QmlDesigner::AssetExportDialog + + Open + Öffnen + + + + QmlDesigner::AssetExporter + + Yes + Ja + + + No + Nein + + + Unknown + Unbekannt + + + + TemplateMerge + + &Browse... + &Auswählen... + + + Template: + Template: + + + + QmlDesigner::RichTextEditor + + &Undo + &Rückgängig + + + &Redo + &Wiederholen + + + + QmlDesigner::TransitionEditorToolBar + + Curve Editor + Kurveneditor + + + Zoom Out + Verkleinern + + + Zoom In + Vergrößern + + + + QmlDesigner::TransitionEditorWidget + + Transition + Title of transition view + Übergang + + + + Qnx::Internal::QnxToolChain + + QCC + QCC + + + + QtSupport::QtVersion + + Qt Version + Qt-Version + + + Location of qmake + QMake-Pfad + + From f0f1775fd5aa2cbfa4e2d1316dfb891ecf69435b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 18 Aug 2020 10:32:11 +0200 Subject: [PATCH 10/57] macOS: Zoom action should "unmaximize" if already maximized Task-number: QTCREATORBUG-24495 Change-Id: I94273f6aa9b425b57e328cfdb052dc171718a97e Reviewed-by: Christian Stenger --- src/plugins/coreplugin/windowsupport.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/windowsupport.cpp b/src/plugins/coreplugin/windowsupport.cpp index 4915c58d9a8..6a4b0574f9e 100644 --- a/src/plugins/coreplugin/windowsupport.cpp +++ b/src/plugins/coreplugin/windowsupport.cpp @@ -67,7 +67,16 @@ WindowSupport::WindowSupport(QWidget *window, const Context &context) m_zoomAction = new QAction(this); ActionManager::registerAction(m_zoomAction, Constants::ZOOM_WINDOW, context); - connect(m_zoomAction, &QAction::triggered, m_window, &QWidget::showMaximized); + connect(m_zoomAction, &QAction::triggered, m_window, [this] { + if (m_window->isMaximized()) { + // similar to QWidget::showMaximized + m_window->ensurePolished(); + m_window->setWindowState(m_window->windowState() & ~Qt::WindowMaximized); + m_window->setVisible(true); + } else { + m_window->showMaximized(); + } + }); m_closeAction = new QAction(this); ActionManager::registerAction(m_closeAction, Constants::CLOSE_WINDOW, context); From 2dddc8520b11438adcc95e700e06c3ecfbed9225 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 18 Aug 2020 10:20:26 +0200 Subject: [PATCH 11/57] Debugger: use additional cdb arguments amends 2942ae876cba9c2082dc383842fbd781766ddef8 Change-Id: Ie1c2eb75300382ff8f350c8a66b893c6bfa21996 Reviewed-by: hjk --- src/plugins/debugger/cdb/cdbengine.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 0472c3617de..211545a7088 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -397,6 +397,8 @@ void CdbEngine::setupEngine() debugger.addArgs({"-y", QChar('"') + stringListSetting(CdbSymbolPaths).join(';') + '"'}); + debugger.addArgs(expand(stringSetting(CdbAdditionalArguments)), CommandLine::Raw); + switch (sp.startMode) { case StartInternal: case StartExternal: From 2bb89a0fb2a396aafde562f6a7447575b750e0bd Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 30 Jun 2020 22:03:36 +0200 Subject: [PATCH 12/57] Squish: Adjust expectations in tst_CSUP06 Task-number: QTCREATORBUG-22729 Change-Id: If945eaf188358a69e32e659a4bfa97a6a5e20083 Reviewed-by: Christian Stenger --- tests/system/suite_CSUP/tst_CSUP06/test.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/system/suite_CSUP/tst_CSUP06/test.py b/tests/system/suite_CSUP/tst_CSUP06/test.py index 7f6afe7af0c..fe4188c3060 100644 --- a/tests/system/suite_CSUP/tst_CSUP06/test.py +++ b/tests/system/suite_CSUP/tst_CSUP06/test.py @@ -97,14 +97,12 @@ def checkSymbolCompletion(editor, isClangCodeModel): "dummy.o":["one", "ONE"], "Dummy::In":["Internal", "INT"], "Dummy::Internal::":["DOUBLE", "one"] } - missing = ["Dummy::s", "Dummy::P", "dummy.b", "dummy.bla(", "internal.o", "freefunc2", - "afun"] + missing = ["Dummy::s", "Dummy::P", "dummy.b", "dummy.bla(", "internal.o", "freefunc2"] expectedResults = {"dummy.":"dummy.foo(", "Dummy::s":"Dummy::sfunc()", "Dummy::P":"Dummy::PI", "dummy.b":"dummy.bla(", "dummy.bla(":"dummy.bla(", "internal.o":"internal.one", "freefunc2":"freefunc2(", "using namespace st":"using namespace std", "afun":"afunc()"} if isClangCodeModel: - missing.remove("Dummy::s") # QTCREATORBUG-22729 missing.remove("internal.o") expectedSuggestion["in"] = ["internal", "int"] # QTCREATORBUG-22728 expectedSuggestion["internal.o"] = ["one", "operator="] @@ -113,7 +111,6 @@ def checkSymbolCompletion(editor, isClangCodeModel): else: expectedSuggestion["using namespace st"] = ["std", "struct ", "struct template"] else: - missing.remove("afun") expectedSuggestion["using namespace st"] = ["std", "st"] # define test function to perform the _real_ auto completion test on the current line def testSymb(currentLine, *args): From 22fcfb0d6f9f44e77e9cd81c3ed075c9974f1d53 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 17 Aug 2020 13:39:21 +0200 Subject: [PATCH 13/57] QmlDesigner: Fix compilation of coretests This reverts commit 7856c2c2f025787f0b0f588bf6a01bf0fa48beea. There were files compiled which are not used in the tests but have external dependencies. So instead of using the preprocessor we simply don't link the source files in the project. Change-Id: Ibba4a1dace1868b016af7135262c795bb29af204 Reviewed-by: Thomas Hartmann --- .../instances/nodeinstanceclientproxy.h | 2 ++ .../designercore/designercore-lib.pri | 2 +- .../designercore/include/nodeinstanceview.h | 2 +- .../designercore/instances/instances-lib.pri | 22 ++++++++++++++++ .../designercore/instances/instances.pri | 26 +++---------------- .../interactiveconnectionmanager.cpp | 6 ----- .../instances/nodeinstanceview.cpp | 7 ++--- .../designercore/instances/puppetcreator.cpp | 5 ++-- src/plugins/qmldesigner/qmldesignerplugin.pro | 1 + 9 files changed, 35 insertions(+), 38 deletions(-) create mode 100644 src/plugins/qmldesigner/designercore/instances/instances-lib.pri diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h index 2131109e463..c034435be8c 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h +++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.h @@ -33,6 +33,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE class QLocalSocket; class QIODevice; diff --git a/src/plugins/qmldesigner/designercore/designercore-lib.pri b/src/plugins/qmldesigner/designercore/designercore-lib.pri index 7fc663f4af0..08842527eec 100644 --- a/src/plugins/qmldesigner/designercore/designercore-lib.pri +++ b/src/plugins/qmldesigner/designercore/designercore-lib.pri @@ -7,7 +7,7 @@ DEFINES += DESIGNER_CORE_LIBRARY INCLUDEPATH += $$PWD \ $$PWD/include -include (instances/instances.pri) +include (instances/instances-lib.pri) include (../../../../share/qtcreator/qml/qmlpuppet/interfaces/interfaces.pri) include (../../../../share/qtcreator/qml/qmlpuppet/commands/commands.pri) include (../../../../share/qtcreator/qml/qmlpuppet/container/container.pri) diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index e29b768ea8f..7ab1fc98083 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -41,7 +41,7 @@ #include #include -#include +#include namespace ProjectExplorer { class Target; diff --git a/src/plugins/qmldesigner/designercore/instances/instances-lib.pri b/src/plugins/qmldesigner/designercore/instances/instances-lib.pri new file mode 100644 index 00000000000..0f55de791e4 --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/instances-lib.pri @@ -0,0 +1,22 @@ +INCLUDEPATH += $$PWD/ + +HEADERS += $$PWD/../include/nodeinstance.h \ + $$PWD/baseconnectionmanager.h \ + $$PWD/connectionmanager.h \ + $$PWD/connectionmanagerinterface.h \ + $$PWD/nodeinstanceserverproxy.h \ + $$PWD/puppetcreator.h \ + $$PWD/puppetbuildprogressdialog.h \ + $$PWD/qprocessuniqueptr.h + +SOURCES += $$PWD/nodeinstanceserverproxy.cpp \ + $$PWD/baseconnectionmanager.cpp \ + $$PWD/connectionmanager.cpp \ + $$PWD/connectionmanagerinterface.cpp \ + $$PWD/nodeinstance.cpp \ + $$PWD/nodeinstanceview.cpp \ + $$PWD/puppetcreator.cpp \ + $$PWD/puppetbuildprogressdialog.cpp + +FORMS += $$PWD/puppetbuildprogressdialog.ui + diff --git a/src/plugins/qmldesigner/designercore/instances/instances.pri b/src/plugins/qmldesigner/designercore/instances/instances.pri index 7d6b71a080f..92a2c027dfa 100644 --- a/src/plugins/qmldesigner/designercore/instances/instances.pri +++ b/src/plugins/qmldesigner/designercore/instances/instances.pri @@ -1,25 +1,7 @@ INCLUDEPATH += $$PWD/ -HEADERS += $$PWD/../include/nodeinstance.h \ - $$PWD/baseconnectionmanager.h \ - $$PWD/capturingconnectionmanager.h \ - $$PWD/connectionmanager.h \ - $$PWD/connectionmanagerinterface.h \ - $$PWD/interactiveconnectionmanager.h \ - $$PWD/nodeinstanceserverproxy.h \ - $$PWD/puppetcreator.h \ - $$PWD/puppetbuildprogressdialog.h \ - $$PWD/qprocessuniqueptr.h +HEADERS += $$PWD/capturingconnectionmanager.h \ + $$PWD/interactiveconnectionmanager.h -SOURCES += $$PWD/nodeinstanceserverproxy.cpp \ - $$PWD/baseconnectionmanager.cpp \ - $$PWD/capturingconnectionmanager.cpp \ - $$PWD/connectionmanager.cpp \ - $$PWD/connectionmanagerinterface.cpp \ - $$PWD/interactiveconnectionmanager.cpp \ - $$PWD/nodeinstance.cpp \ - $$PWD/nodeinstanceview.cpp \ - $$PWD/puppetcreator.cpp \ - $$PWD/puppetbuildprogressdialog.cpp - -FORMS += $$PWD/puppetbuildprogressdialog.ui +SOURCES += $$PWD/capturingconnectionmanager.cpp \ + $$PWD/interactiveconnectionmanager.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp index e90d57640d9..6da44603df8 100644 --- a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp @@ -27,9 +27,7 @@ #include "nodeinstanceserverproxy.h" #include "nodeinstanceview.h" -#ifndef QMLDESIGNER_TEST #include -#endif #include @@ -51,7 +49,6 @@ void InteractiveConnectionManager::setUp(NodeInstanceServerProxy *nodeInstanceSe { ConnectionManager::setUp(nodeInstanceServerProxy, qrcMappingString, target); -#ifndef QMLDESIGNER_TEST DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); int timeOutTime = settings.value(DesignerSettingsKey::PUPPET_KILL_TIMEOUT).toInt(); for (Connection &connection : m_connections) @@ -68,7 +65,6 @@ void InteractiveConnectionManager::setUp(NodeInstanceServerProxy *nodeInstanceSe }); } } -#endif } void InteractiveConnectionManager::showCannotConnectToPuppetWarningAndSwitchToEditMode() @@ -78,11 +74,9 @@ void InteractiveConnectionManager::showCannotConnectToPuppetWarningAndSwitchToEd tr("The executable of the QML emulation layer (QML Puppet) may not be responding. " "Switching to another kit might help.")); -#ifndef QMLDESIGNER_TEST QmlDesignerPlugin::instance()->switchToTextModeDeferred(); nodeInstanceServerProxy()->nodeInstanceView()->emitDocumentMessage( tr("Cannot Connect to QML Emulation Layer (QML Puppet)")); -#endif } void InteractiveConnectionManager::dispatchCommand(const QVariant &command, Connection &connection) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 01c924f3130..21623f865c1 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -83,11 +83,12 @@ #include #include #include -#include #endif #include +#include + #include #include @@ -551,10 +552,8 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, } } else if (node.isRootNode() && name == "language@Internal") { const QString languageAsString = value.toString(); -#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) multiLanguageAspect->setCurrentLocale(languageAsString); -#endif m_nodeInstanceServer->changeLanguage({languageAsString}); } else if (node.isRootNode() && name == "previewSize@Internal") { m_nodeInstanceServer->changePreviewImageSize(value.toSize()); @@ -993,10 +992,8 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() } QString lastUsedLanguage; -#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_currentTarget)) lastUsedLanguage = multiLanguageAspect->currentLocale(); -#endif return CreateSceneCommand( instanceContainerList, diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 1992f813ac8..bdae76c0d3f 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -30,7 +30,6 @@ #include #ifndef QMLDESIGNER_TEST #include -#include #endif #include @@ -46,6 +45,8 @@ #include #include +#include + #include #include #include @@ -520,12 +521,10 @@ QProcessEnvironment PuppetCreator::processEnvironment() const customFileSelectors = m_target->additionalData("CustomFileSelectorsData").toStringList(); -#ifndef QMLDESIGNER_TEST if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current(m_target)) { if (!multiLanguageAspect->databaseFilePath().isEmpty()) environment.set("QT_MULTILANGUAGE_DATABASE", multiLanguageAspect->databaseFilePath().toString()); } -#endif } customFileSelectors.append("DesignMode"); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pro b/src/plugins/qmldesigner/qmldesignerplugin.pro index 506b3d743b8..6590dcb0462 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.pro +++ b/src/plugins/qmldesigner/qmldesignerplugin.pro @@ -10,6 +10,7 @@ include(../../qtcreatorplugin.pri) include(qmldesignerplugin.pri) include(designercore/designercore-lib.pri) +include(designercore/instances/instances.pri) include(components/componentcore/componentcore.pri) include(components/integration/integration.pri) include(components/propertyeditor/propertyeditor.pri) From 9df06af9bdae6d4e7daf82c53992099d3dd61f92 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 18 Aug 2020 13:21:58 +0200 Subject: [PATCH 14/57] CMake: Fix comparison of source paths when importing We need to check canonical paths with canonical paths. Otherwise we get a mismatch when using e.g. a linked directory for the source path on the command line and then try to import the build in Qt Creator. Change-Id: I153be74b6cfdf5070e023780604ce64c92df0e6d Reviewed-by: Cristian Adam --- src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index de40ecbd2de..7a3c29d68c3 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -245,8 +245,10 @@ QList CMakeProjectImporter::examineDirectory(const Utils::FilePath &impo qCDebug(cmInputLog) << "Failed to read configuration from" << cacheFile << errorMessage; return { }; } - const auto homeDir - = Utils::FilePath::fromUserInput(QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", config))); + const auto homeDir = Utils::FilePath::fromUserInput( + QString::fromUtf8( + CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", config))) + .canonicalPath(); const Utils::FilePath canonicalProjectDirectory = projectDirectory().canonicalPath(); if (homeDir != canonicalProjectDirectory) { qCDebug(cmInputLog) << "Wrong source directory:" << homeDir.toUserOutput() From f830a21bf86607af700872e30be301b5e855d619 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 17 Aug 2020 15:42:29 +0200 Subject: [PATCH 15/57] Squish: Update tst_git_local This doesn't run into QTCREATORBUG-11074 anymore, because Creator now uses "git add --intent-to-add" when adding files. Change-Id: I125ff29f9974efad5d22fed220f6155cc5c6804b Reviewed-by: Orgad Shaneh Reviewed-by: Christian Stenger --- tests/system/suite_tools/tst_git_local/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/suite_tools/tst_git_local/test.py b/tests/system/suite_tools/tst_git_local/test.py index 9703e450e86..8208cf5e0ab 100644 --- a/tests/system/suite_tools/tst_git_local/test.py +++ b/tests/system/suite_tools/tst_git_local/test.py @@ -185,7 +185,7 @@ def main(): "Some important advice in the README") invokeMenuItem("File", "Save All") commitsInProject = list(commitMessages) # deep copy - commitOutsideProject = commit("Added README file", "Committed 2 files.", True) # QTCREATORBUG-11074 + commitOutsideProject = commit("Added README file", "Committed 1 files.", True) commitMessages.insert(0, commitOutsideProject) invokeMenuItem('Tools', 'Git', 'Current File', 'Log of "%s"' % readmeName) From 888cbe7f8a0a55cbef3f5b73c60dff6ed71ed084 Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Tue, 18 Aug 2020 13:13:19 +0200 Subject: [PATCH 16/57] QmlPuppet: Refactor ChangeAuxiliaryCommand Change-Id: I32eb04db96322883aa908e22724756f5e25ded09 Reviewed-by: Marco Bubke --- .../commands/changeauxiliarycommand.cpp | 30 ++--------------- .../commands/changeauxiliarycommand.h | 32 ++++++++++--------- .../instances/nodeinstanceserver.cpp | 2 +- .../instances/qt5testnodeinstanceserver.cpp | 2 +- .../instances/nodeinstanceview.cpp | 5 ++- 5 files changed, 23 insertions(+), 48 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.cpp index 7f67b2112d4..1f49501eabc 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.cpp +++ b/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -29,35 +29,9 @@ namespace QmlDesigner { -ChangeAuxiliaryCommand::ChangeAuxiliaryCommand() = default; - -ChangeAuxiliaryCommand::ChangeAuxiliaryCommand(const QVector &auxiliaryChangeVector) - : m_auxiliaryChangeVector (auxiliaryChangeVector) -{ -} - -QVector ChangeAuxiliaryCommand::auxiliaryChanges() const -{ - return m_auxiliaryChangeVector; -} - -QDataStream &operator<<(QDataStream &out, const ChangeAuxiliaryCommand &command) -{ - out << command.auxiliaryChanges(); - - return out; -} - -QDataStream &operator>>(QDataStream &in, ChangeAuxiliaryCommand &command) -{ - in >> command.m_auxiliaryChangeVector; - - return in; -} - QDebug operator <<(QDebug debug, const ChangeAuxiliaryCommand &command) { - return debug.nospace() << "ChangeAuxiliaryCommand(auxiliaryChanges: " << command.m_auxiliaryChangeVector << ")"; + return debug.nospace() << "ChangeAuxiliaryCommand(auxiliaryChanges: " << command.auxiliaryChanges << ")"; } } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.h b/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.h index 669a747be8b..675e18e26cc 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.h +++ b/share/qtcreator/qml/qmlpuppet/commands/changeauxiliarycommand.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -25,6 +25,8 @@ #pragma once +#include +#include #include #include @@ -34,24 +36,24 @@ namespace QmlDesigner { class ChangeAuxiliaryCommand { - friend QDataStream &operator>>(QDataStream &in, ChangeAuxiliaryCommand &command); +public: + friend QDataStream &operator>>(QDataStream &in, ChangeAuxiliaryCommand &command) + { + in >> command.auxiliaryChanges; + return in; + } + + friend QDataStream &operator<<(QDataStream &out, const ChangeAuxiliaryCommand &command) + { + out << command.auxiliaryChanges; + return out; + } + friend QDebug operator <<(QDebug debug, const ChangeAuxiliaryCommand &command); -public: - ChangeAuxiliaryCommand(); - explicit ChangeAuxiliaryCommand(const QVector &auxiliaryChangeVector); - - QVector auxiliaryChanges() const; - -private: - QVector m_auxiliaryChangeVector; + QVector auxiliaryChanges; }; -QDataStream &operator<<(QDataStream &out, const ChangeAuxiliaryCommand &command); -QDataStream &operator>>(QDataStream &in, ChangeAuxiliaryCommand &command); - -QDebug operator <<(QDebug debug, const ChangeAuxiliaryCommand &command); - } // namespace QmlDesigner Q_DECLARE_METATYPE(QmlDesigner::ChangeAuxiliaryCommand) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index ce5cf29953b..1148e0c6d2d 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -633,7 +633,7 @@ void NodeInstanceServer::changePropertyValues(const ChangeValuesCommand &command void NodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) { - foreach (const PropertyValueContainer &container, command.auxiliaryChanges()) { + for (const PropertyValueContainer &container : command.auxiliaryChanges) { setInstanceAuxiliaryData(container); } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp index fed075a4866..3e635909ec9 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp @@ -116,7 +116,7 @@ void Qt5TestNodeInstanceServer::changePropertyBindings(const ChangeBindingsComma void Qt5TestNodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) { - foreach (const PropertyValueContainer &container, command.auxiliaryChanges()) { + for (const PropertyValueContainer &container : command.auxiliaryChanges) { setInstanceAuxiliaryData(container); } diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 21623f865c1..c1d45060f50 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -535,9 +535,8 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, if (hasInstanceForModelNode(node)) { NodeInstance instance = instanceForModelNode(node); if (value.isValid() || name == "invisible") { - PropertyValueContainer container(instance.instanceId(), name, value, TypeName()); - ChangeAuxiliaryCommand changeAuxiliaryCommand({container}); - m_nodeInstanceServer->changeAuxiliaryValues(changeAuxiliaryCommand); + PropertyValueContainer container { instance.instanceId(), name, value, TypeName() }; + m_nodeInstanceServer->changeAuxiliaryValues({ { container } }); } else { if (node.hasVariantProperty(name)) { PropertyValueContainer container(instance.instanceId(), name, node.variantProperty(name).value(), TypeName()); From 8c227dea1dde59b4558b50c1a1b1b3ba7845115a Mon Sep 17 00:00:00 2001 From: Jacek Nijaki Date: Thu, 13 Aug 2020 13:10:52 +0200 Subject: [PATCH 17/57] McuSupport: Update json kit processing to match Qt for MCUs 1.4 FreeRTOS backend is now a separate platform and requires dedicated json kit file. Starting form Qul 1.4 there is no option to produce BareMetal and FreeRTOS kits out of one json file. This change is backward compatible with Qul 1.3. Change-Id: Ic50b566a7f1a01fad4b00c07e723dfe1343fc2b0 Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupportoptions.cpp | 20 ++- src/plugins/mcusupport/mcusupportsdk.cpp | 151 +++++++++++++++---- 2 files changed, 136 insertions(+), 35 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 7d58dbf466c..16a36bebd94 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -607,7 +607,9 @@ static void setKitCMakeOptions(ProjectExplorer::Kit *k, const McuTarget* mcuTarg (qulDir + "/lib/cmake/Qul/QulGenerators.cmake").toUtf8())); config.append(CMakeConfigItem("QUL_PLATFORM", mcuTarget->qulPlatform().toUtf8())); - if (mcuTarget->os() == McuTarget::OS::FreeRTOS) + + if (mcuTarget->qulVersion() <= QVersionNumber{1,3} // OS variable was removed in Qul 1.4 + && mcuTarget->os() == McuTarget::OS::FreeRTOS) config.append(CMakeConfigItem("OS", "FreeRTOS")); if (mcuTarget->colorDepth() >= 0) config.append(CMakeConfigItem("QUL_COLOR_DEPTH", @@ -627,8 +629,12 @@ static void setKitQtVersionOptions(ProjectExplorer::Kit *k) QString McuSupportOptions::kitName(const McuTarget *mcuTarget) { - const QString os = QLatin1String(mcuTarget->os() - == McuTarget::OS::FreeRTOS ? " FreeRTOS" : ""); + QString os; + if (mcuTarget->qulVersion() <= QVersionNumber{1,3} && mcuTarget->os() == McuTarget::OS::FreeRTOS) { + // Starting from Qul 1.4 each OS is a separate platform + os = QLatin1String(" FreeRTOS"); + } + const QString colorDepth = mcuTarget->colorDepth() > 0 ? QString::fromLatin1(" %1bpp").arg(mcuTarget->colorDepth()) : ""; @@ -637,8 +643,12 @@ QString McuSupportOptions::kitName(const McuTarget *mcuTarget) mcuTarget->toolChainPackage()->type() == McuToolChainPackage::TypeDesktop ? "Desktop" : mcuTarget->qulPlatform(); - return QString::fromLatin1("Qt for MCUs %1 - %2%3%4") - .arg(mcuTarget->qulVersion().toString(), targetName, os, colorDepth); + return QString::fromLatin1("Qt for MCUs %1.%2 - %3%4%5") + .arg(QString::number(mcuTarget->qulVersion().majorVersion()), + QString::number(mcuTarget->qulVersion().minorVersion()), + targetName, + os, + colorDepth); } QList McuSupportOptions::existingKits(const McuTarget *mcuTarget) diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index e72760151e4..8c824dec8e9 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -150,7 +150,6 @@ static McuPackage *createRGLPackage() static McuPackage *createStm32CubeProgrammerPackage() { - QString defaultPath = QDir::homePath(); if (Utils::HostOsInfo::isWindowsHost()) { const QString programPath = @@ -204,14 +203,18 @@ static McuPackage *createMcuXpressoIdePackage() static McuPackage *createBoardSdkPackage(const QString &envVar) { - const QString envVarPrefix = envVar.chopped(strlen("_SDK_PATH")); + auto postfixPos = envVar.indexOf("_SDK_PATH"); + if (postfixPos < 0) { + postfixPos = envVar.indexOf("_DIR"); + } + const QString sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar; const QString defaultPath = qEnvironmentVariableIsSet(envVar.toLatin1()) ? qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath(); auto result = new McuPackage( - QString::fromLatin1("MCU SDK (%1)").arg(envVarPrefix), + QString::fromLatin1("MCU SDK (%1)").arg(sdkName), defaultPath, {}, envVar); @@ -254,34 +257,42 @@ struct McuTargetDescription QString freeRTOSBoardSdkSubDir; }; -static QVector targetsFromDescriptions(const QList &descriptions, - QVector *packages) +struct McuTargetFactory { - const QHash tcPkgs = { - {{"armgcc"}, createArmGccPackage()}, - {{"greenhills"}, createGhsToolchainPackage()}, - {{"desktop"}, createDesktopToolChainPackage()}, - }; + McuTargetFactory(const QHash &tcPkgs, + const QHash &vendorPkgs) + : tcPkgs(tcPkgs) + , vendorPkgs(vendorPkgs) + {} - const QHash vendorPkgs = { - {{"ST"}, createStm32CubeProgrammerPackage()}, - {{"NXP"}, createMcuXpressoIdePackage()}, - {{"Renesas"}, createRGLPackage()} - }; - - QHash boardSdkPkgs; - QHash freeRTOSPkgs; - QVector mcuTargets; - - for (const auto &desc : descriptions) { - McuToolChainPackage *tcPkg = tcPkgs.value(desc.toolchainId); - if (desc.toolchainId == "desktop") { - auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion), - desc.platformVendor, desc.platform, - McuTarget::OS::Desktop, {}, tcPkg); - mcuTargets.append(mcuTarget); - continue; + QVector createTargets(const McuTargetDescription& description) + { + if (description.toolchainId == "desktop") { + return createDesktopTargets(description); } + auto qulVersion = QVersionNumber::fromString(description.qulVersion); + if (qulVersion <= QVersionNumber({1,3})) { + // There was a platform backends related refactoring in Qul 1.4 + // This requires different processing of McuTargetDescriptions + return createMcuTargetsLegacy(description); + } + return createMcuTargets(description); + } + + QVector getMcuPackages() const + { + QVector packages; + packages.append(boardSdkPkgs.values().toVector()); + packages.append(freeRTOSPkgs.values().toVector()); + return packages; + } + +protected: + // Implementation for Qul version <= 1.3 + QVector createMcuTargetsLegacy(const McuTargetDescription& desc) + { + QVector mcuTargets; + auto tcPkg = tcPkgs.value(desc.toolchainId); for (auto os : {McuTarget::OS::BareMetal, McuTarget::OS::FreeRTOS}) { for (int colorDepth : desc.colorDepths) { QVector required3rdPartyPkgs = { @@ -319,13 +330,93 @@ static QVector targetsFromDescriptions(const QList createMcuTargets(const McuTargetDescription& desc) + { + QVector mcuTargets; + auto tcPkg = tcPkgs.value(desc.toolchainId); + for (int colorDepth : desc.colorDepths) { + QVector required3rdPartyPkgs = { + vendorPkgs.value(desc.platformVendor), tcPkg + }; + QString boardSdkDefaultPath; + if (!desc.boardSdkEnvVar.isEmpty() + && desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs + if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) { + auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar); + boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg); + } + auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar); + boardSdkDefaultPath = boardSdkPkg->defaultPath(); + required3rdPartyPkgs.append(boardSdkPkg); + } + + auto os = McuTarget::OS::BareMetal; + if (!desc.freeRTOSEnvVar.isEmpty()) { + os = McuTarget::OS::FreeRTOS; + if (!freeRTOSPkgs.contains(desc.freeRTOSEnvVar)) { + freeRTOSPkgs.insert(desc.freeRTOSEnvVar, createFreeRTOSSourcesPackage( + desc.freeRTOSEnvVar, boardSdkDefaultPath, + desc.freeRTOSBoardSdkSubDir)); + } + required3rdPartyPkgs.append(freeRTOSPkgs.value(desc.freeRTOSEnvVar)); + } + + auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion), + desc.platformVendor, desc.platform, os, + required3rdPartyPkgs, tcPkg); + mcuTarget->setColorDepth(colorDepth); + mcuTargets.append(mcuTarget); + } + return mcuTargets; + } + + QVector createDesktopTargets(const McuTargetDescription& desc) + { + auto tcPkg = tcPkgs.value(desc.toolchainId); + auto desktopTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion), + desc.platformVendor, desc.platform, + McuTarget::OS::Desktop, {}, tcPkg); + return { desktopTarget }; + } + +private: + const QHash &tcPkgs; + const QHash &vendorPkgs; + + QHash boardSdkPkgs; + QHash freeRTOSPkgs; +}; + +static QVector targetsFromDescriptions(const QList &descriptions, + QVector *packages) +{ + const QHash tcPkgs = { + {{"armgcc"}, createArmGccPackage()}, + {{"greenhills"}, createGhsToolchainPackage()}, + {{"desktop"}, createDesktopToolChainPackage()}, + }; + + const QHash vendorPkgs = { + {{"ST"}, createStm32CubeProgrammerPackage()}, + {{"NXP"}, createMcuXpressoIdePackage()}, + {{"Renesas"}, createRGLPackage()} + }; + + McuTargetFactory targetFactory(tcPkgs, vendorPkgs); + QVector mcuTargets; + + for (const auto &desc : descriptions) { + auto newTargets = targetFactory.createTargets(desc); + mcuTargets.append(newTargets); } packages->append(Utils::transform >( tcPkgs.values(), [&](McuToolChainPackage *tcPkg) { return tcPkg; })); packages->append(vendorPkgs.values().toVector()); - packages->append(boardSdkPkgs.values().toVector()); - packages->append(freeRTOSPkgs.values().toVector()); + packages->append(targetFactory.getMcuPackages()); return mcuTargets; } From c3641b02e4c2d2c0ffe44490384fb89db41e7719 Mon Sep 17 00:00:00 2001 From: Jacek Nijaki Date: Thu, 13 Aug 2020 14:07:10 +0200 Subject: [PATCH 18/57] McuSupport: Update wizard entry point generation Use app_target_default_main() macro and default entry points that come with Qul instead providing own main.cpp templates. Qt for MCUs has own default entry points implementations that may vary for release to release. OS cmake variable is also removed in Qul 1.4. Change-Id: I729b28250671c1a873d30d8c6c4f8d12306435d2 Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupport.qrc | 2 - .../application/BareMetal/main.cpp.tpl | 14 ------- .../wizards/application/CMakeLists.txt | 4 +- .../wizards/application/FreeRTOS/main.cpp.tpl | 38 ------------------- .../wizards/application/wizard.json | 11 +----- 5 files changed, 4 insertions(+), 65 deletions(-) delete mode 100644 src/plugins/mcusupport/wizards/application/BareMetal/main.cpp.tpl delete mode 100644 src/plugins/mcusupport/wizards/application/FreeRTOS/main.cpp.tpl diff --git a/src/plugins/mcusupport/mcusupport.qrc b/src/plugins/mcusupport/mcusupport.qrc index 59ff76770b0..b45fb8ccc31 100644 --- a/src/plugins/mcusupport/mcusupport.qrc +++ b/src/plugins/mcusupport/mcusupport.qrc @@ -8,8 +8,6 @@ wizards/icon@2x.png wizards/application/CMakeLists.txt wizards/application/project.qmlproject.tpl - wizards/application/BareMetal/main.cpp.tpl - wizards/application/FreeRTOS/main.cpp.tpl wizards/application/main.qml.tpl wizards/application/wizard.json diff --git a/src/plugins/mcusupport/wizards/application/BareMetal/main.cpp.tpl b/src/plugins/mcusupport/wizards/application/BareMetal/main.cpp.tpl deleted file mode 100644 index d6c84deeeaf..00000000000 --- a/src/plugins/mcusupport/wizards/application/BareMetal/main.cpp.tpl +++ /dev/null @@ -1,14 +0,0 @@ -#include "%{ProjectName}.h" - -#include -#include - -int main() -{ - Qul::initPlatform(); - Qul::Application app; - static %{ProjectName} item; - app.setRootItem(&item); - app.exec(); - return 0; -} diff --git a/src/plugins/mcusupport/wizards/application/CMakeLists.txt b/src/plugins/mcusupport/wizards/application/CMakeLists.txt index 3ad30d99cab..ea34696b240 100644 --- a/src/plugins/mcusupport/wizards/application/CMakeLists.txt +++ b/src/plugins/mcusupport/wizards/application/CMakeLists.txt @@ -4,8 +4,10 @@ project(%{ProjectName} VERSION 0.0.1 LANGUAGES C CXX ASM) find_package(Qul) -add_executable(%{ProjectName} ${OS}/main.cpp) +add_executable(%{ProjectName}) qul_target_qml_sources(%{ProjectName} %{MainQmlFile}) target_link_libraries(%{ProjectName} Qul::QuickUltralite) + app_target_setup_os(%{ProjectName}) +app_target_default_main(%{ProjectName} %{RootItemName}) diff --git a/src/plugins/mcusupport/wizards/application/FreeRTOS/main.cpp.tpl b/src/plugins/mcusupport/wizards/application/FreeRTOS/main.cpp.tpl deleted file mode 100644 index 43ca2e706b8..00000000000 --- a/src/plugins/mcusupport/wizards/application/FreeRTOS/main.cpp.tpl +++ /dev/null @@ -1,38 +0,0 @@ -#include "%{ProjectName}.h" - -#include -#include - -#include -#include -#include - -#ifndef QUL_STACK_SIZE -#error QUL_STACK_SIZE must be defined. -#endif - -static void Qul_Thread(void *argument); - -int main() -{ - Qul::initPlatform(); - - if (xTaskCreate(Qul_Thread, "QulExec", QUL_STACK_SIZE, 0, 4, 0) != pdPASS) { - std::printf("Task creation failed!.\\r\\n"); - configASSERT(false); - } - - vTaskStartScheduler(); - - // Should not reach this point - configASSERT(false); - return 0; -} - -static void Qul_Thread(void *argument) -{ - Qul::Application app; - static %{ProjectName} item; - app.setRootItem(&item); - app.exec(); -} diff --git a/src/plugins/mcusupport/wizards/application/wizard.json b/src/plugins/mcusupport/wizards/application/wizard.json index b458bb010a8..99888785734 100644 --- a/src/plugins/mcusupport/wizards/application/wizard.json +++ b/src/plugins/mcusupport/wizards/application/wizard.json @@ -12,6 +12,7 @@ "options": [ { "key": "MainQmlFile", "value": "%{ProjectName}.qml" }, + { "key": "RootItemName", "value": "%{ProjectName}" }, { "key": "CMakeFile", "value": "%{ProjectDirectory}/CMakeLists.txt" } ], @@ -52,16 +53,6 @@ "target": "%{ProjectDirectory}/%{ProjectName}.qmlproject", "openInEditor": false }, - { - "source": "BareMetal/main.cpp.tpl", - "target": "%{ProjectDirectory}/BareMetal/main.cpp", - "openInEditor": false - }, - { - "source": "FreeRTOS/main.cpp.tpl", - "target": "%{ProjectDirectory}/FreeRTOS/main.cpp", - "openInEditor": false - }, { "source": "main.qml.tpl", "target": "%{ProjectDirectory}/%{MainQmlFile}", From 4f595be64a4db00bf53a41e9026943561d645522 Mon Sep 17 00:00:00 2001 From: Jacek Nijaki Date: Mon, 17 Aug 2020 11:25:59 +0200 Subject: [PATCH 19/57] McuSupport: Read RGL configuration from json Previously whole SDK configuration for Renesas RH850 was hard coded. Now configuration is read form the json file - same as for the other SDKs. This changes adds new boardSdk params: - name: sets the name for the SDK. If not set existing logic for generating name as "MCU SDK()" is used - defaultPath: path where to look for the SDK if env variable is not set Change-Id: Ia4b92c95bdc3302309cea4b935afbdd2e0bcadbe Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupportsdk.cpp | 93 ++++++++++++++---------- 1 file changed, 56 insertions(+), 37 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 8c824dec8e9..858811c6120 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -201,24 +201,52 @@ static McuPackage *createMcuXpressoIdePackage() return result; } -static McuPackage *createBoardSdkPackage(const QString &envVar) +struct McuTargetDescription { - auto postfixPos = envVar.indexOf("_SDK_PATH"); - if (postfixPos < 0) { - postfixPos = envVar.indexOf("_DIR"); - } - const QString sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar; + QString qulVersion; + QString platform; + QString platformVendor; + QVector colorDepths; + QString toolchainId; + QString boardSdkEnvVar; + QString boardSdkName; + QString boardSdkDefaultPath; + QString freeRTOSEnvVar; + QString freeRTOSBoardSdkSubDir; +}; - const QString defaultPath = - qEnvironmentVariableIsSet(envVar.toLatin1()) ? - qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath(); +static McuPackage *createBoardSdkPackage(const McuTargetDescription& desc) +{ + const auto generateSdkName = [](const QString& envVar) { + auto postfixPos = envVar.indexOf("_SDK_PATH"); + if (postfixPos < 0) { + postfixPos = envVar.indexOf("_DIR"); + } + auto sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar; + return QString::fromLatin1("MCU SDK (%1)").arg(sdkName); + }; + const QString sdkName = desc.boardSdkName.isEmpty() ? generateSdkName(desc.boardSdkEnvVar) : desc.boardSdkName; + + const QString defaultPath = [&] { + const auto envVar = desc.boardSdkEnvVar.toLatin1(); + if (qEnvironmentVariableIsSet(envVar)) { + return qEnvironmentVariable(envVar); + } + if (!desc.boardSdkDefaultPath.isEmpty()) { + QString defaultPath = QDir::rootPath() + desc.boardSdkDefaultPath; + if (QFileInfo::exists(defaultPath)) { + return defaultPath; + } + } + return QDir::homePath(); + }(); auto result = new McuPackage( - QString::fromLatin1("MCU SDK (%1)").arg(sdkName), + sdkName, defaultPath, {}, - envVar); - result->setEnvironmentVariableName(envVar); + desc.boardSdkEnvVar); + result->setEnvironmentVariableName(desc.boardSdkEnvVar); return result; } @@ -245,18 +273,6 @@ static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const QSt return result; } -struct McuTargetDescription -{ - QString qulVersion; - QString platform; - QString platformVendor; - QVector colorDepths; - QString toolchainId; - QString boardSdkEnvVar; - QString freeRTOSEnvVar; - QString freeRTOSBoardSdkSubDir; -}; - struct McuTargetFactory { McuTargetFactory(const QHash &tcPkgs, @@ -295,14 +311,16 @@ protected: auto tcPkg = tcPkgs.value(desc.toolchainId); for (auto os : {McuTarget::OS::BareMetal, McuTarget::OS::FreeRTOS}) { for (int colorDepth : desc.colorDepths) { - QVector required3rdPartyPkgs = { - vendorPkgs.value(desc.platformVendor), tcPkg - }; + QVector required3rdPartyPkgs = { tcPkg }; + if (vendorPkgs.contains(desc.platformVendor)) { + required3rdPartyPkgs.push_back(vendorPkgs.value(desc.platformVendor)); + } QString boardSdkDefaultPath; - if (!desc.boardSdkEnvVar.isEmpty() - && desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs + if (!desc.boardSdkEnvVar.isEmpty()) { if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) { - auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar); + auto boardSdkPkg = desc.boardSdkEnvVar != "RGL_DIR" + ? createBoardSdkPackage(desc) + : createRGLPackage(); boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg); } auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar); @@ -338,14 +356,14 @@ protected: QVector mcuTargets; auto tcPkg = tcPkgs.value(desc.toolchainId); for (int colorDepth : desc.colorDepths) { - QVector required3rdPartyPkgs = { - vendorPkgs.value(desc.platformVendor), tcPkg - }; + QVector required3rdPartyPkgs = { tcPkg }; + if (vendorPkgs.contains(desc.platformVendor)) { + required3rdPartyPkgs.push_back(vendorPkgs.value(desc.platformVendor)); + } QString boardSdkDefaultPath; - if (!desc.boardSdkEnvVar.isEmpty() - && desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs + if (!desc.boardSdkEnvVar.isEmpty()) { if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) { - auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar); + auto boardSdkPkg = createBoardSdkPackage(desc); boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg); } auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar); @@ -402,7 +420,6 @@ static QVector targetsFromDescriptions(const QList vendorPkgs = { {{"ST"}, createStm32CubeProgrammerPackage()}, {{"NXP"}, createMcuXpressoIdePackage()}, - {{"Renesas"}, createRGLPackage()} }; McuTargetFactory targetFactory(tcPkgs, vendorPkgs); @@ -448,6 +465,8 @@ static McuTargetDescription parseDescriptionJson(const QByteArray &data) colorDepthsVector, toolchain.value("id").toString(), boardSdk.value("envVar").toString(), + boardSdk.value("name").toString(), + boardSdk.value("defaultPath").toString(), freeRTOS.value("envVar").toString(), freeRTOS.value("boardSdkSubDir").toString() }; From 6d897b67dde127687159ddabbc82e9899a79466f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 18 Aug 2020 13:59:21 +0200 Subject: [PATCH 20/57] Doc: Update info about CMake support Fixes: QTCREATORBUG-24497 Change-Id: I524907e461ba91b18a6741690bef9ed27a40fb5f Reviewed-by: Cristian Adam --- .../qtcreator-android-cmake-settings.png | Bin 18211 -> 15855 bytes .../images/qtcreator-cmake-build-settings.png | Bin 15224 -> 31827 bytes .../images/qtcreator-cmake-build-steps.png | Bin 5838 -> 7032 bytes .../images/qtcreator-cmake-clean-steps.png | Bin 6320 -> 6648 bytes .../images/qtcreator-cmakeexecutable.png | Bin 13755 -> 16369 bytes doc/qtcreator/images/qtcreator-kits-cmake.png | Bin 0 -> 36931 bytes .../creator-projects-cmake-building.qdocinc | 50 +++++++++------ .../src/cmake/creator-projects-cmake.qdoc | 48 +++++++++------ .../creator-projects-building.qdoc | 5 +- .../creator-projects-settings-build.qdoc | 58 +++++++++++------- .../creator-projects-targets.qdoc | 8 +-- 11 files changed, 103 insertions(+), 66 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-kits-cmake.png diff --git a/doc/qtcreator/images/qtcreator-android-cmake-settings.png b/doc/qtcreator/images/qtcreator-android-cmake-settings.png index 7f8026bccab18829b53abee31fd1a2762e7efad4..e02c77c38bc302fd94b431cc7d3fd2c063c784ba 100644 GIT binary patch literal 15855 zcmeAS@N?(olHy`uVBq!ia0y~yVCrLFU<%@3Vqjo6G~x1N1_s-0o-U3d6}R5reLGpk zz3xWkfBBgCVi%Z>B$RtLsH}*6w56M&-w17SnKC*6}5e2r!h-nV)0w)h#_4z0IxI`o&-X8x1*t9uh-%EC)+(?Y|~ zmz?)0udn;ayTDpod-bMeyZ6nF44qm3_(k_|28IKTPxCEU7#IRf85kC1F)*x(6 zT9t3}rnTbJ#o2u33=ETlzRoV6|K(Ff(f2+`Xy{#A?&HSh-Iklr%-nhUpWX_q+%?N@ z={@y7&BDO&c9q}nEw6hYgk1H%c76UA>6^`S{O8$duC$8Q-uh#~-?=NTbQLqFsL%6@ zTmH6U8yiCc)2e;d-yb?`Jh=7b>kRgaq(_dw0sk$bn^^;d5nwOa4G{QIods&yter+f3~e=iO;Wnj1)!ixxE7<&~P z0|P#GC^G{CObwLXu!@o40AtWs>E-{^85lOa2gM%AMy!;=VlH;UDlyBizh1B3_v@9X z;*mG*KlIx3OD<2Z&3yUe;oqBo&yDWoKQmYV`ebdsZh!I4?0Ki($H>pD-r;AO{=Jmn?@iA9^o`4m z0}saLl{f9)`+AYuf>+z$*=x_4Z(i?lwR_F0Gu?0d?raYGnzZ`Yt=-x3TjnYp`nlNF zS!Z4C|K{@brDrcc<(c~A<)T*;J{^oId>y>Y5J+d#}mv`j!{xH+}0SoBR8({bM}Q#Z|xli2k1O2H`|CP=f9d!0PbM78KXxUg z_UEUk;a109{Y^jrZvD0R^G+>UL0?Nk{yq%Lf9-d2%F$zm)8yh(>_5Nyq^GB~=10Qn z`x*OVPi_ADU~bA$>*&hO|El>v9lfueBDZd~_|@~4Z`e3gdAwdfKi@T1HFWv%mVY-N zy4~hnH2>l6_i_6T*R8&vYws)m*=Jj5?9GRnp#|ctKD$EielLk!dUu!hu0OqP_Do(+ z`y;eH3V%qyal5R)&2eL;<@I}i|84DDz3cJu1*;cEd&xa-zwU7RPm!1f-_}%_FWMOT9zvle)?(;8utMY7%w%nTf_T{5U)9htOp48^v*lo9$>zeiF z)2(|xpWFR3RO|Pg=aT>8G`G3zzVhX4R_v+tKaP*rUpgljf7P_LCua48g%@oT9p9#( zH7H)#uJGTW$6^NWZ<(JGCbe6-+F$4YfBTKE=NZ4x+so3nd=u^Swmn**@05Lac1Z2Z zOH0=sp11a%c1eT%?(MUd<*ZZfzHZjO{`bkh;fhQD$5-r@Ov;_0zQ#Pprb0e$$<0fq z?5zGaPNplXX30KyyK0?&Z&}RtHJ7xHU3)vN?(3_ruV+^N$j>*8Nu4hn`u+TJ(f_Ho zmny%1{V+u;=+osRA5?C?KOiF#)_cedK{Ag=txPj8VAjQMB zKEm0*W3pnOdS9NFF@2WVs}0HJuJ@+eKGF{jE&U$Pz#I4e`rc`A_isNrf8}X{*}LMm z$ro0<>O1>-8^6z!%hKzkiXyW1XYQ&IjCyS+8JaHV8+SdpXr=nPcj{kj?_B?S>*SOB zjaRB&ZKt0*e7I!QJl;_CXS27ha*z8U=X|wu3AgUonW0~|mUpi`_Jn)>JnK(vg_(hS zj~aOF3G|J^$n-MXmS){}%k)nEz90&rbDK zezOiO4zUd=e)RfF>cPX#iT-OBsG z$Cv)Zf&-zUiWUW95Wpwd=lWnU^$}U*Ga`+onUTcb~mJb$#D` z&FH5LWf9ro+o#6r)l0a^o-wqN{xqLyV}ID;{N3iqe@0LLUzQs#z}71AFKBB{Z+y$O zUH)!YfBvj|aC*|JZb_rrYF_L2yxDEpX|gclQ^1>$+%20{PW-}h=5q1XrTR4sSBmUB zV3v_2w)@R0{zX&H-~GAum|N)g&wuXj58m&q_THxE`|pY0zI?EpU-D9-ywiV6lWyyk z*>+QF*KOajX#3QySGFwN8gBDj{qFwWdy+qY1nhm{mt9&FvHFUWuEe`rANV$%Xj~;b z?c42BdfV@93)8o^jq%++wfD~f6Vp@P@(Z2Ho%XJ-epS07`wAW&I?XMxa8`)# z)uY*0KU=eSExEd5_Ve1~l_}ZzNryyDx=z%&PgnmTzU&>SPTDK5cxrFmp)8-tvDM{Y z79WfKe_#H*dugx7)k2Rp-%FF@vZrN z`+nWuukqb=_nQy!$y$9m6yv@^!9Vz`&8=ToUOzPd0c`-7S4tr_7h#PLybY0FyZT@b z#b<_d?yam^7ZUq3nRmy=d(}nXYZRaUard8B^Ce9s{q&`P6Ng_%w!JC6thP$?=Iy7u z{i~K%eEM+t*reA-nPv#@`*n4FoYb+SPBAN3LxaEGS#6cJJ9gEs^|!NTUcX-b+Pq8i zs15HiU-K&=M*hs7*S|{HbzZo&qEbSiw`tYNs(Yb#^OtP1*tD?o&W0~l_vf5Gdc^#_ z-I}bg#}0?wxY_0VJK#pZ-Y46(G6a~esLBiZo3?Yk<;6t9jq9&&S`|G#t@gTe=e>%E zQ**SoO%b}=ek;Ez>tt>=%+tyD+-^SLGz}!#vv$e|oo6mSx%I zTA8#k!j0Rb82T?GtpeW?c$+A zj?fi4xwpK^a;mp7J6)Y2@|ORT?2|*^3!|$ys84k&3w!2rZPuN}(&(Fv0i|gxADozQ zV=1%E6CbPX-7o(x%CdcxInO$=_4div-!6S}Vq5KUd#fw!x4m)qGQy(5*8jNV$a(X8 z(~@@=d!I$G*VWBi8t}KS{7_$L><&Zg{n5XVzKXq*=s3%GkA{uG-P8MLHb-ym?k`GR z&;E4H|8wq78U0@I$6Rf5=)5~CZqHNeNpiN4SF|rx)UCX#6#Mq!*MqNXUi+pm{X8{m znf9~w+OzX4)s`+jy8Ky}wWM{%{@>Nf^BuI?HKwV{yq!DcPH)}AkM0b|zIZ*YJoKd0 zvOY2TseQS-rD<*avFY(oCcKNfYP}|Qx_zpx|KnvVtMsC-=7)c|yyVp$-!naG#O%qH_U(IuHrT}u{Ul=Yhy_I=62PyctU(wn{V zgG%VS_SdgF)8y8rKc4XAzMbZLF>UYm^pi&%?)typ`o8{QNpbSt7w@a8aj<&+UZuB9@bTNn3r(eGzi0hyIz?>Psms+D zqSgsq5B+<4?eA-wo`1D6`+uwBO^`}`cw%`_=|3~07ZICY{QA&dT+g#<_s?A?`Cnb? zP)!Uh+%ZXZ)vnAJm)pL)3X{?n`s%w?tn@Tns#@>4mn*IQJyw(7p}T4F?x4~)0iBujx{Ak(Wxuq=&wryI zdUx`P#Pxp#ZNv8ptXg-XbjIfTKr^*%ZMRP)Rb}hF{dVoast*S$C(6A!WfyMscJc3P zo3{K?+IBH$eobX&rFL}l>yJN8f6JCPOg|@b__F)o=x~`gn_nG$_|h)>k819_xSf?z zua>^OHmfIN*+Z7=PbOu!u8KXzyR{?IOjdnsHG9SGRj+po2A3}6R@^pusEb{}83&wC=@hs1M+>qFD+&ty+OHOnQUD0E5T ziFQ{3$sOF_@SjAHXcmBHH>ld{hp4aao|Mx=JuHt*y{+cUx{X3rZ>to2x z$=^;JD$lyRH}2=+8(Yi1o-YXYs`Z!pbfxXrebM-zr^5M4xmTG*-HhR#W|YQW@!Ci3 z=))bW_tqb_-qY26tGZ|TZN__vUX!Lpnap|Td@kwv|G1ddd9s4rHm^!v`^v9)KF{oo z+~4*kA6Crn&pOm6dN1(m+x>@?+HK#z&Hs6!Z{e$H+_qnDn=Yz0TDR);(zgrBCWn_E zPMs3FWz}@IqZ^Zt@B8<4eXwb${(@DfW8>bICr{PO5w8oFzDwhBciBbheS9}^Q#VGL zM3p7XvfUdt_x^9$nB5Mp7Ye;^qb-ZG?|<#k>%G;cHQgp_ zzovHbY4iGw-Ahxf1@?vn-mgl{{Gx2QiFr@lExxSq-+QBVvs~CKD%Wb-{GYbsm-O0? zUmXKXL-mgxShO_m$ffs>F7bap;kxx&Th3NXqZgU-A2)<8j#_2hx@F06xdN%ciQl43 zY|}$`hTQq*;Qi#_+F!R1#X9+}%6n;iqji;X`-(NME;(CF+;?Zs#<&@5y7!!;&(9IJ z+qO#DdfMhgm#-gQZSyhL_1~SZzgI2N{F(ma*M>0vYw~t0-+I<&X8KE+3+`MdVE6p$ zC9bCC}6r&1=>wS^4;g+@YJd4;{aA?cT~NDX_AyU}dHZGG7c2 ztemxKr4+-8S*r|puex`z_^@zHZQ1foKc@dbzW>h0iqpb#z9lR#zxDp^628f+uI#Iy z_U!9npQ|Cg&5K?gvR!&L+B`be`d8R_z18M|_zVb?3gXYrk5S#JB{P5<1SRH4aMZ;ljO>m}x;F)z+qwd~c=;L?vT zZ%DtM`j8G6%i79HrQl1AKtk>H`C}*vSn&Sotcqy3d4zCb}IAE&EKA> zy>rtwi_dyJlWwkC1~s{9?W?_kTf#$(BGqQF{J3Q3+q!u z=PF%h^Rijr7MQt(mOScOc2fG2vi$7JO24*Cyzbxq*i%-j&04qr{MC@OzcWJ0wm!`; zc|Pac!ec*V>}qaEJP7f<`qX>RRK`7C#fm+aYn`TFjb?jsZ{ezJX3uTCjB%bP@9EuN z>*N0Q$;0Kns^P!SD7P;)IuIFq_3dT3o;krwR(_1K{B+S$SL?HtNw1DstEa3R&o(LB zyo*NBZNJxrFRx8sR&G?o}&yl{&3Dbn|VM*-f|OnWDSa+^bdUEew^NZM@*y z?**3%?;3;_r}iD)wpEJnG+(G~mRS2Qf!P~RO0Vmmp}KU#)MGp4(*mygUY*&os=Q*w z#^TV~>u0SJkG}eF&Lqi_D+m5gUHMXa8H-%{SMls(#qB=YR}wQbgTD_$bM+!e6*};h2zzb-nrXWbxweQ-EU4Oo&37>(Pur8^Dn<1zEpUt`H|g!zvT5fm!I%1y?N}Eb=V!R z&#xxWzq0U?`Pt`JU(`iMewoo@Bc&W-d(_!?SBUS`8<#JhDzjAjZ+A}Bz*$)I&Dp?N z*Y~rokP6xRVAZ{+9e;jXOh3Tm8?wRNJu~jV*n+Hpt%e5}8&<893gKk{^>unHj|V%0 zTE#IdciH4QzZHCPsCP~CoTa}fe-2cbb$p?Y{jD!)FRy)m`fBgKTx((3Tbp-PZ{2-F znr*Sh*`J4`ka1>an-Uc8HLd6QSA>?Vr37jNL%kpWmx%2K=P)C_+mDG$#jnoKi-A1 z?da>@eW`%Ee^L$=dKAzi!J_{apbv3=a-Y$m!Ha*W3s5!uR~9`{mT4x>wNDDW(Hkf{vBNM zg@!&~oYC67DbRYFTawoHGqc>n^;Ye&OS_yBdUsRxV(SCho2Qz@aCh)nU$uLcQafYw zx4st>gHw;VFIuO$fA5?_{mcKnm-DgNl3%*+d|Tokp8c$#z*xig;lz&FPxpQNx?9%j z!0NqggkLk{-`{(KzmM;6V~fO!WLURJGrnloqT!b{bAHs3yVOU+(l zYxTvr?>;sYZ+f|vHkik*UMJJ*C2Q?3a?K{x?XTc%fBoQ-*-kCb%T;`n*$@m zs%2TL=2^ZHud=mZ2>_SJ%nYHyrYpd8j^kD1Lm~6qZk={t%Xcn0R`}-RLbnUEKg{dd z{ZjDp2axiuFRi{+?CQHzBYoO^cG==D2SVRUF8^^O@o1F(@$^p;-|x)r*?P%}-K~Dk z71=3wDp@YS5{|q(PwBPEx2(5$KOb&8HGh6z(W`%q5}`$i&c@Rfo?(}K!|i^8GFR@d zzGkaf_uPHG-|lMgJr!JAQTpP7lc~GyannyaHa|)y{TJD>Pfosmt$oUkYI$GJt5-js zPq{%XdnK|PU#iY3 zTm0zdBL|I*oR+J$-dnq>J$b78tp1~4Zryl!apL1u=R>cn{alf*CmuJ0TgB3Dqokt} ze?jA15wP3$@Ts)L$3blZP&lUU>U&iq-Mjna6VJcj9p8$? zWW2kcb=S_O;$_V(ld6ovI&nv3PcOUK@$Z4eG=q$Z*WH}f`h5yKbH_&9;e%jBh_nB?l>Rr+KDKD@4m)?CM?vV4Z=fsZ8r)PXyueWFQ|4Uu`xoOKP ztNCkJ*V;`z@uPgB;K#1{6Q+HYJ8n)59ytE$g;)MK-+n=GpS-ST2>eaTL{#MuXKCSADb6Z*aiCZnH^8TC1ZsW774_br-+>nfCa} zu|>yTT4l|Q{=LrK=botbzpFnDXIr`MI=lSRJfYtfPvsZ>x~A#IVRS6y6Qs6Em1c>1c)+7;1|0AApCJ#c=0@|QfGddV#-tfF3j z-W^)HRd8Btmafd?pwD}M3RS%Qxb4UKrAg2BeApOz_r}IKqVx92#W{E8ufANPb#clc zW`Vh;Dz_*9x^!vY7XL><=Y;Jh`xdY0Sr_|P*r>)s-$>T`bZ+X@t*`t$Li_w5hjHz1 zOWzRsHVTyG`2?<>p0GLiN5$<|S4!&(viDAR|MVcIsy_5BU%{$nS(i&?=G^jq&$nQu znBB8&-~6s#Uhy?f?qu`k%vH;>0!$eKOhcPjF`iksD*xV|pPQrhfX01%uZHjz*U44t8;4`;4*E?+ro zmG5=K*_TU8=J_P4uMU?}J6FE7%w$z5s5;xeYH`+?ms?-S^Bmd=YLG_GTerA-)o1sa z$7AD_s1o&k5^Wmxw`o9v{EZ6-Se|stFEebdCY#_8mRJGQ{RkF{+c|yu2H5- z&cDt}O9ZFJEAn1;1=acnvB%dfdo8h^dC%=v7pJ9OFWlU|*sIraviqlU&A5l_mdoVI zyxU#b^KRM2v$xd$FUSfo4Lw{UD?EE$a{8)wo2pWc4&GSz%zbg8-MY4)hKny-gdK_T z&lD`HnYZ-XZSJTx)rCkp*6@8O4A&1?m>ORF_4X;Z73=JRi$3jMSaUu4_m`NdKP~TN z&px}d_EN_$+w!OT#S?f6Rvr5is@o#)S={eEXs8lCjfyhenQRsjWmWg%!$a{SKLq=t zEvoFC7* zrWF;K)mvyikN!U2cK82lOSa4R$%Qh{Pz~MxH(|GV&s+BU-mzDwpP8$3{_TUg3bXZ2 z&D^%?yTec68%O4@Ezr3yDHi&t{L!j;eP@oDWq7=Ndhyi*g;(dQ=j3KAy1FEbVe^t# z`<55i-?{0Pb9efwYuCOxn62EkZ99L*s`N#ncmJ>5Tw0w~%0Fvo&CgHTo@>6zZu@oW zo?GqWqf@T#+h(3`y8iZ_4Ta9KtA5^nU-x~ozunL0PdPLd_f9gFv0cSxV7$stx?Xf8 z&%eEY6Ra~++SR^ZYYu#SXo=#yZD-jlKTTOvEBPhfQ*zq0y?NTpFKm+k^IPFgV-!|JG}*ebqPn-SR2_P40&7on=~Z znYGesQqZKQYtKF@&0XtJxz}g*)-_Y_YG`en^8H$xzWy8bud>>|?DqHt&njPc^;)2R zuxW#2aH;QJN8{-2!G&UR{Vxu^J*~OjZ(E-0f9LN@e1CSVTKsfM@TW^{FCVTdsJYwb zePUs9{hF)Y*WSc8%E?UDDNa0Ew|CNNwxjWKrJ?0Fzi5QU?<#qjBDDJZJloydtBkt0 zF1WY#$D*3Vd78CXcZKbJQ#J2L-jS}}Y4cNb^t|G>uNUopU-R7h;062NH_sp1|FG1= z-=ZpnH^DB%c85#s9>Z1M&&wP=T2Gul^Sga5mw7>Rh>GtOC3;XX*uzdYJ zFZ^pnwcWZ^hi_k+C_iJ7Oqd>UY1Jw=pDk`cse4G|1J`zk&@>Qo7PXIop9 z|MW=bkJ~Cs&3#TyZwr^sR=;L8Y5Ui$x5E4LmhO|jnAF`G;-&X&{gN$j9{vynr^<)7 zPd(xn?|sLhU!Es!U79WAW!=U7Jx=tRmi5+omol#X+QmCtZfn)g8B@Hyw?s|-K123F z?6;Z__KL-;nro}~Dm+}_qFr?7#tn&mtJhxLSM@*CvO3dz)1{=N$KK4I7NcS2pLt6u zlsV!|`&Oy-U)^?X0OOA@%m;8 zw~4Es{9FHR%DdNcAJlgqzw>$0D%Mcu2$9g|zUPk}yCYXnz4}(x`sF3@fwt(Q-)Q?L@aB5e0X_z`T04P&bzET3hp3ElPDSMZCA|C zO6Sk9udj>j5q{Xw`dF;*-o~Y>@+u4=y_vVFGGAU;=&axIQCY@(9vf(p4rt{FXyOLM z4loU6W&knB6GYVoSv~|Z4KxP?vI10~f!7qF2<}?EYI>i%{h!tQe>Dj>acq3e;lvsB z@UiDAE13)NKc}w$_v(5d1A~EJQ&^w;e=AjgpQ{g_`>U!mFzi-2(K<s#ig)e_gM8?04(IzR%M8!!nxw=kNbmHS4qaI{sUa>=rOE zth)D}@59sAGbe4fDYxHMch6lIWbCz7df!{zm%dxf$*|y6^P*Q7e)7Hy459Bguex0K z{sLp%yLZd7K>Yoy;%&Y?`}!+4RsOE-b4G@SRlQ+s3=6VWu`z)98w?ItLu{k2CVtD8 z*JL=5!dbNNN$1L{mp?v&0^(N)BZHdjg;O6N$1i`TzD@BjCD|2qqgi-wC< z@iAFfeR;97_<2}ZSlDwDr>jn^{W6w9ZW6PXtn%kjbaS=%Dq~%Crchu}vP-D!tl8=3 z=f%dw*_mD!)RI^wsb%dMx?iV7LR4HYhGSKkOv?+2z|i({4_Ak;p9h+%%$d2NWmW5f zEJeO8tKy>@7Gx=|h~iik7Z6&%;bQf#$*WJkUTt4_>ve9;gUf0zu~(0-_xfe`DRt#D zp{7;Md)LM6{Pb$e9uU%Pfrmw2g?4AAB`1I82>sr{p9y>d|C1MXpfAZfi%kBSux$J*<|HIP4 zz<{sa`uk?=)2#J8B(DCe)pLJx64qR6Zr_Wi#5zV6dW_5U>j4_zyEo3C0o z-;67L+HC2+;jL;e!P!n7k>5-1UP}%AZacej$3yMQ>t5Y5_wG0v@O7#8bU#0Zu=lpr zW%*y9oZR~0)xZDE;d{?+eRQbm)Dz_xo!=<}4_ysyLyBjueKq^x^ty+8CjS3$-elg~ zS#uJOFuA&3bq-HIrDwLRfd$p)%^7XG%CI@%E=UFt#A~iJL^PI(D zWA`_QN{foL<}7N7unASa-#q*9ddGjhn%lPD4n2FmX;pdNt4H~F_qBfazj|@TzEzVi zd;Hq;{_Uzszn?GaaLmWPW&zp7nfqR$%)eVc z{JAP#z==aqO)4-{-g?^=@f*_lE%*1GE|yxDwXkX7tmD(BsjYnF<;UPFQ~ka_?&rnj z>+k;KaS&er=f~v_zMZRf<-cCK)VZDS?Dz9i0uGA#2b&ti#{IpxeEt6dW(Vto*L+v8 zg)#?+eSLd=PHW@DmVB#@gVo+1t$+wm4r6;eE4w zRXp!4WIt1`u6QuRb|8u_44WMuA$;j zS@%`EIlJ3GX|)djB>A}djeDQu?T*!bc=GP&uWJ(?Ry;jEfA6Mm8I%58{QUph|60oj z-S_{uZ~aog-PSGe|A){2=ZJlMTL16oW6t;L24ZJd#YI`k&9j{MzI`ibX&?W(RmPpq zvSgw*e1EdoeDNx|Wy@c$yRR{0(~G-T`dY8{%kKTSVS|_N)sK^Qzb$*r7XVsc=RSY# zp9dF@{5bsl|JU{V|A^N|#DDow|9}5}p6-9I_uqXNbL-oFiD&=g|9|OjOKP-LstE=a zZQRUX=2@5LrKYBq`YDI#h8XbV?I`*4<6y{Fhh%@bb@nGsXRfY#aa}ExUw6iq_}5i( zOVpQ&E}5;L6;`_QN#5?eE7DiRW%&Jju~}H&W|qKh`~R=?|G&DQ=Pvg5;phEa-Ls~- z{e1D+{`YJB|8M-|(^voh!!Pff7vA{M;^u-^7w*_pf6I}$^!iGS`-+4W&sx~U=H|RF z&zQj{wbEH%t;pBK!XRezs>|1M7v|R_9BG=zE$OwIC+e{7s=hTAN!z8%8dk0Rb>ysj z?Yp{v>HGhDS}!!O{@?zPpt_%b{62mADSr5fe%-%r{Yy*t-&i+og6O66-_Q5|`E*{c z{@-Vv^v>h|pH%MOQeU)vgY@6h&0qe#`YYSYmTnYY}v{S=4)am+?`zp4s`?TUIR&U-Ni(?B1}sJ7=yEkG-mY zzb53-^7H>cO^^S#{CI!-zTZFVe?6UE|MRqd-TQY6ww1sCe9ktPkFEaWdgAl+{Wt1< zK6`w>+U|^T#Ksv5<4>G*m;a~adFS8dlBw>!(K73PEVn;ne6l>+DeTH)Tth_uM<%*ZTNKzg_jqXN#xo zp8x-NeBICgd_Vg8<(KErum2ZT_)>q{;n&;c>L)(i`SZm$eW!o=b>H7Do?iFM#`}!% zcVTw#{5*TPb#XTW5(Dd<`|H0~deqeYPK%1FExtPUOqtvaHT4z08dmLE@MO~Mu9sI| zU%RM%YOD3mN!73etrA@ zlaJs3)BOBpcm0Q-&;LI@{r{8r{PlcBOY;ApEvwl3OFe!`A9!ULSC)Bt<>jmGSZd*Q?>{Vk%4DLu(u$FB8w* zpB6LYes*kl=_SLsclCN^S>5GJdDm-9-?c_MG*)lt?Y!*J#lBbj+5O&1n_vI1W0fCw z<-f;W8Nu8BFFANQ^5OjdN5u~>l2bL(%YPS{q8`cedDSb0$3g6wH_vpgGEVfre}_Hz z>elEro0kSQu^Hde*Pv7G6+plZa+no9QZ?XK}*Bh>h z|Nrrx|I?oRe~&jiG1dP$FSk^6e|&^Vgzd4%^?#l>i*7zETBdnBEJgkCQbyrru2-k) z$JeDwZM?Ppeb(`%Z)d6tE}X^wWt&lgV94LE-{l!Io-bHYwe`XkKJUvmm9M_k_+H(; z@a4X|1;YCOUu=H--k#~gxzlG??JIeC>15`SS9^ole{8N^t$y9Cdhgk-4=+ua^k?>7 zTg#)MMOF#(L;l{LFZ;i`pJ9veKF!|?UUk)WYliUZOj$Mk-#uq&d3wye{>RIW()^5D zK3`hvKRcxM;_sgXv8#eqmI(@l*|HiVUF3>9E1OGle`u<LKK}G-lJzrl=y#H%)Z9wVEuqBO?o7YS>mzMVLUL~iu^3>c_j11k*lUM1-?D+7B z$z_FFC^N%~T_Ssw+wX18Y`PWxlMacvi7b{u-Ak4`}q@z?+p;9B*D+T>Sjp+~~;2$hlyPY>J+oxb*RH z2rt77!_f9;&u(r`KRh9BIb@kPuMQW(3|r(Tqe(0~Lqb^S-&;&9Ag|6^#mF$DY1MjA zTM+6`vFNM$ck92s`4{b*Umh$H%FG}Z2}u@88*hDoopt&4T@lkxP!uvSgkBG^{qg-@ znttcm=$Dhe)K03uQoV|eL1)V<{n%Y4MM@j1-rw9@y?W~QhxZd+Y;`P;s7`Vxw4(TnQJaWtJ z{mZ>mznnd_clqAlt^evHqdrwVz2`P-!XEzYug24qVk;+s(g8yQYk29R8;L4y>sIf| z{}MFqM3nj^pPfHfN-=EMfV9Yvmm#7g^m~#cXrG1G)x@R~)5R2=Ojk-V7*wy~3$~bV zSNrSCOykdQUj`fu@ckUh%#h|k3?uy7=|?yJZZ8YJ@{S9X{{F0hwbXyt#h#7(ZkF%6 zWCf=yB!gIee!cdr&(+nD+19Z!z7k*Otzu;0Ui->>y58J59&7GZe|vK;>r++k=IQ(R z)|*}Ll03Bk@RY4*KP;NIFz8B)QpjYG^7XI&1bq$Ia`Z@@N}gYwN$P?u28K}ot)a0Q z=H}kz8gDY#R3>GBa$@ zMq2pE0Lo%M4{LsXd1;(}?#%Y(&aBR+XTy0xc?j0p1dRt&LYg}vpKn|e0;LC^tF_Vk zy0TU!FIso@L7J5e4;)s5=4`>a8`dH9g>|YygV>->HE2T+Bpa@j0`*vVK^<6dVh3$$ z34y8y1q5U~Aq1=d+QZ$@u-)ahmv&6(1+CoJz`yEU_Ky=6C${8(v^M+=ES+Au z5|qV1FMS1FHfg)zO^X?*T-q7(^}Afo_o~3)AX5g0-|JuPQ`^36+jjXq&Q}>2WNbqB z|5b?iRlR+C)x-NSbM_{(G=ICFch~Rp{hLyI>V7*;OMUR8Fvot*Wp;b-U4>63swua31#2mKN_v=|zZ}2%{(8HTvUfk6 zHco_SnO!ySeU9j@*`Kk1*N@$a${XOOpFdA%>cIRCHRhaHa2 z!j@Y)-{+|2|GuYdv3v0s+2<#{zR9|IS*6mw zwdD=s_r-2~d0E^-MU`(rCIE8!Bxw$7!KI2ASZS~)18n~9x}KBT9d+zS`C1PjX?g*0$BrA z4@oGX$x}Aa{0B3`09Y-r$pCgs!zxfQ33eKI3<@-B3Qdy%pov_EtDs?$P;mJTPI;h& z2=Xg>8V1K0aw12JG(mh1P2>(&L*53ng0cn3^DCga1nL$f8`vP(h!Lg|>IATQXg0!a z124>T2m?XAIZ(vZu3~_OKOP&vWf!t%V7^^3YZ5GDV>lUR1E!Nf;RSIKMOIH8;#MyM zjpczu37o1HAaX>*s*Tp6+=?v%!u($IW~^dlV1Um$LD-;S(S){;y<1BDe0X?RpF^=l zAnCf`6saRto}ulJ`s8e@-rdEy(r z*m9$kWhvW6w!MBnR~N3V`}!)>J&Z%KWkv`KNG#&&dQOnhPL5ZdI24aGt^9Rrs`h#= z#Z48j|7}kHet%ZnPy0J>c#}T2cUQ5r%=pfcv@}cc*d@R9=F=*yy0S9v7_OBLlb&Md zD4XW`cE=g7*cDM7&C6b$p02-N>BydASsTthOEWnCDq?ldiG8=e|9`gj;qB$?+#yo`1HG?8Z8i0H{V!W=Uuin;awv0r?6nJ6R}gW;v8m6vtK&h*pLQvwl~(UgDv~y4+>@Eeo<%i7nEZekJ?yN~?(_SFdcG_RKFdR%hkn zJ)1?XUhR*)8vAOJ*Y-VktLA;%b)`yyBRb%#1h`Gfsrbww?49k~+%>%S*XDkicQ2YV z^Wpt>ntzR|Ztf1cxOCIu*BgpvP08C4g9em>6=`OFZlc(Qo zP}eP8`Fwr8c~II~y;j?kX4?YKDISS&19|G=*(<8zJT9N=?t34Wc(r!kr1dv4ru?dE zT@q#4yGrg&xLEU)H8Yk=ON;u7ZC>up-RWQd|NG}d?(aOkW0QWazTG=5a<%u$7Yp}v zpKe|7$`8_Vb<**O`Fry6a{HaP<^}ceH{G8--OudMHZ!{!lONmomkK8R0Vj)Z9#^Xq z=J0=NdvWG;?z~q@M-B#+&RF+a6_oCMG@2sRSH3b>`0OQk3gqz#F2xps-Te!$C|vVA z7he13M$rBp=Jzb>|NYqn8gnZXbX?}R(s2!FjBVMgeQT#r18rgfjhZW#$vUpoop*2H zDn^C_^FTEOsQUye718%R`vhNQV0hqwtmN6G|MGcS%enWMdhszZFfe$!`njxgN@xNA DHbz@s literal 18211 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≈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 literal 15224 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 diff --git a/doc/qtcreator/images/qtcreator-cmake-build-steps.png b/doc/qtcreator/images/qtcreator-cmake-build-steps.png index 5809136a85c8183832049a7436cf50c7277946e9..02784e47d207d294d3bbb89dca2716a1145eec6a 100644 GIT binary patch literal 7032 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 literal 5838 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 diff --git a/doc/qtcreator/images/qtcreator-cmake-clean-steps.png b/doc/qtcreator/images/qtcreator-cmake-clean-steps.png index 88be99d715a813ed2c9413a27379a0de30fb78b0..e04711c3a74ab4e3fa418e141cbb7a51da54be41 100644 GIT binary patch literal 6648 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 diff --git a/doc/qtcreator/images/qtcreator-cmakeexecutable.png b/doc/qtcreator/images/qtcreator-cmakeexecutable.png index 5c575887623ad14d18b015f8003fc57afc78b4d5..31f162d48b1de955525885988df302336a8d99da 100755 GIT binary patch literal 16369 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%0DTQW%D}q9!)~=bh=TPatHx2&^XYbr| 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdocinc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdocinc index a31449984ce..d197facbc67 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdocinc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -34,32 +34,45 @@ \section2 CMake Build Configuration + Configuring medium-sized to large CMake projects in \QC can be a + challenge due to the number of options that you need to pass to + CMake to configure the project correctly. \QC creates an initial + configuration for you based on the kit settings and displays it in + the \uicontrol {Initial CMake parameters} field. + \image qtcreator-cmake-build-settings.png - Setting names with a common prefix (up to the first underscore character) - are grouped under the prefix. To view all settings, select the - \uicontrol Advanced check box. + In the \uicontrol Value column, you can view and edit the actual values + of the parameters that are passed to CMake. Parameter names are listed + in the \uicontrol Key column. Names with a common prefix (up to the first + underscore character) are grouped under the prefix. To view all parameters, + select the \uicontrol Advanced check box. - To add build settings, select \uicontrol Add, and then select the type of - the setting that you are adding: \uicontrol Boolean, \uicontrol String, + To add parameters, select \uicontrol Add, and then select the type of + the parameter that you are adding: \uicontrol Boolean, \uicontrol String, \uicontrol Directory, or \uicontrol File. - To change the type of the selected setting, select + To change the type of the selected parameter, select \uicontrol {Force to bool}, \uicontrol {Force to file}, \uicontrol {Force to directory}, or \uicontrol {Force to string}. - To modify the value of a build setting, double-click it, or select it, + To modify the value of a parameter, double-click it, or select it, and then select \uicontrol Edit. To save the changes, select \uicontrol {Apply Configuration Changes}. Keep in mind that a configuration change might trigger a follow-up configuration change. - To remove a setting, select \uicontrol Unset. + To remove a parameter, select \uicontrol Unset. To reset the changes that you made, select \uicontrol Reset. - To reconfigure CMake, select \uicontrol Build > - \uicontrol {Clear CMake Configuration}, and then - select \uicontrol Build > \uicontrol {Rescan Project}. + The parameter values that you change are passed via \c -D