diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index ebe11aa4efc..4466a1bfc91 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "13.0.84") # The IDE version. -set(IDE_VERSION_COMPAT "13.0.84") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "14.0.0-rc1") # The IDE display version. +set(IDE_VERSION "14.0.0") # The IDE version. +set(IDE_VERSION_COMPAT "14.0.0") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "14.0.0") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2024") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md index 3625940c757..bd4a54d9310 100644 --- a/dist/changelog/changes-14.0.0.md +++ b/dist/changelog/changes-14.0.0.md @@ -17,6 +17,8 @@ General ([Documentation](https://doc-snapshots.qt.io/qtcreator-extending/lua-extensions.html)) * Added a mode for managing extensions * Added `Clear` and `Save Contents` to context menus of all output views +* Fixed the tab focus order in the search toolbar + ([QTCREATORBUG-30791](https://bugreports.qt.io/browse/QTCREATORBUG-30791)) * Locator * Added the option to show results relative to project root ([QTCREATORBUG-29462](https://bugreports.qt.io/browse/QTCREATORBUG-29462)) @@ -46,6 +48,14 @@ Editing ([QTCREATORBUG-31116](https://bugreports.qt.io/browse/QTCREATORBUG-31116)) * Fixed the unindenting with backspace when multiple cursors are active ([QTCREATORBUG-31158](https://bugreports.qt.io/browse/QTCREATORBUG-31158)) +* Fixed the `Save` shortcut after closing a document while the document's + drop-down menu is shown + ([QTCREATORBUG-31205](https://bugreports.qt.io/browse/QTCREATORBUG-31205)) +* Fixed the highlighting of matches for `Whole Words Only` searches + ([QTCREATORBUG-31020](https://bugreports.qt.io/browse/QTCREATORBUG-31020)) +* Fixed that the documents chooser did not close when releasing `Ctrl` in + some setups + ([QTCREATORBUG-31228](https://bugreports.qt.io/browse/QTCREATORBUG-31228)) ### C++ @@ -79,6 +89,9 @@ Editing ([QTCREATORBUG-29943](https://bugreports.qt.io/browse/QTCREATORBUG-29943)) * Fixed the handling of system headers ([QTCREATORBUG-30474](https://bugreports.qt.io/browse/QTCREATORBUG-30474)) + * Fixed a warning when adding an empty session to the list of sessions with + a single Clangd instance + ([QTCREATORBUG-31186](https://bugreports.qt.io/browse/QTCREATORBUG-31186)) * Built-in * Added the `Enable indexing` option in `Preferences` > `C++` > `Code Model` to turn off the built-in indexer @@ -101,6 +114,8 @@ Editing ([Documentation](https://doc.qt.io/qtcreator/creator-quick-ui-forms.html)) * Fixed that the color preview did not work on named colors ([QTCREATORBUG-30594](https://bugreports.qt.io/browse/QTCREATORBUG-30594)) +* Fixed the default path to `qmlformat` on Windows + ([QTCREATORBUG-31257](https://bugreports.qt.io/browse/QTCREATORBUG-31257)) * Language Server * Switched on by default for Qt 6.8 and later * Added an option for generating `qmlls.ini` files for CMake projects in @@ -206,6 +221,8 @@ Projects ([QTCREATORBUG-30836](https://bugreports.qt.io/browse/QTCREATORBUG-30836)) * Added support for custom build types ([QTCREATORBUG-30014](https://bugreports.qt.io/browse/QTCREATORBUG-30014)) + * Fixed issues with cross-compilation setups + ([QTCREATORBUG-31249](https://bugreports.qt.io/browse/QTCREATORBUG-31249)) ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-build-settings-cmake-presets.html)) @@ -317,6 +334,9 @@ Platforms * Improved the performance of the generic deployment method * Fixed that the file size check that is performed before parsing C++ files could freeze Qt Creator until finished for remote projects +* Fixed that the deployment of a directory deployed only its contents instead + of the directory itself + ([QTCREATORBUG-31136](https://bugreports.qt.io/browse/QTCREATORBUG-31136)) ### Qt Application Manager @@ -333,8 +353,9 @@ Ahmad Samir Aleksei German Alessandro Portale Alexander Drozdov +Alexandre Laurent Ali Kianian -Andre Hartmann +André Hartmann André Pönitz Artem Sokolovskii Assam Boudjelthia @@ -364,6 +385,7 @@ Mats Honkamaa Michael Weghorn Miikka Heikkinen Orgad Shaneh +Pino Toscano Pranta Dastider Ralf Habacker Robert Löhning diff --git a/doc/qtcreator/config/style/qt5-sidebar.html b/doc/qtcreator/config/style/qt5-sidebar.html index 340da73317c..c5c9f62c161 100644 --- a/doc/qtcreator/config/style/qt5-sidebar.html +++ b/doc/qtcreator/config/style/qt5-sidebar.html @@ -30,16 +30,17 @@
@@ -61,7 +62,7 @@
  • Test
  • Use Qt Creator
  • Use the UI
  • -
  • See All
  • +
  • How To
  • @@ -76,6 +77,7 @@
  • Glossary
  • Keyboard Shortcuts
  • Known Issues
  • +
  • SDK Tool
  • Technical Support
  • Version Control Systems
  • Analyzers
  • @@ -87,6 +89,6 @@
  • Preferences
  • UI Design
  • Views
  • -
  • See All
  • +
  • Reference
  • diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard.png b/doc/qtcreator/images/qtcreator-add-resource-wizard.png deleted file mode 100644 index e76223f5b20..00000000000 Binary files a/doc/qtcreator/images/qtcreator-add-resource-wizard.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard2.png b/doc/qtcreator/images/qtcreator-add-resource-wizard2.png deleted file mode 100644 index 13246171a3b..00000000000 Binary files a/doc/qtcreator/images/qtcreator-add-resource-wizard2.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard3.png b/doc/qtcreator/images/qtcreator-add-resource-wizard3.png deleted file mode 100644 index 1ca3c01636e..00000000000 Binary files a/doc/qtcreator/images/qtcreator-add-resource-wizard3.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-class-info-qt-gui.png b/doc/qtcreator/images/qtcreator-class-info-qt-gui.png deleted file mode 100644 index 9ca3f6aba4d..00000000000 Binary files a/doc/qtcreator/images/qtcreator-class-info-qt-gui.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png b/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png deleted file mode 100644 index a64c7f47e52..00000000000 Binary files a/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.webp b/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.webp new file mode 100644 index 00000000000..adf6a91af67 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.webp differ diff --git a/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png b/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png deleted file mode 100644 index 9d4e7b2ca03..00000000000 Binary files a/doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc.webp b/doc/qtcreator/images/qtcreator-new-file-qrc.webp new file mode 100644 index 00000000000..1daa33c4a1b Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-file-qrc.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc1.webp b/doc/qtcreator/images/qtcreator-new-file-qrc1.webp new file mode 100644 index 00000000000..f7ad0ed335b Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-file-qrc1.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc2.webp b/doc/qtcreator/images/qtcreator-new-file-qrc2.webp new file mode 100644 index 00000000000..4a3d08e585c Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-file-qrc2.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png deleted file mode 100644 index e0e5bcda818..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-project-build-system.webp b/doc/qtcreator/images/qtcreator-new-project-build-system.webp new file mode 100644 index 00000000000..fb0cc763bff Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-build-system.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-class-info.webp b/doc/qtcreator/images/qtcreator-new-project-class-info.webp new file mode 100644 index 00000000000..94380ac1578 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-class-info.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-kit-selection.webp b/doc/qtcreator/images/qtcreator-new-project-kit-selection.webp new file mode 100644 index 00000000000..bfaf1408418 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-kit-selection.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp new file mode 100644 index 00000000000..3f4eb8422c5 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp new file mode 100644 index 00000000000..3324e3e4fc2 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp new file mode 100644 index 00000000000..0556d66d29e Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-ready.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-ready.webp new file mode 100644 index 00000000000..e9cba553bf9 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-ready.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp new file mode 100644 index 00000000000..de2c5dc95ac Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui.webp new file mode 100644 index 00000000000..dd8273d0728 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-python-window-ui.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp b/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp index f7c3be17d5b..d8f94224496 100644 Binary files a/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp and b/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png deleted file mode 100644 index 292cac5e7ee..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp new file mode 100644 index 00000000000..4e485059450 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png deleted file mode 100644 index 81faa7e18e6..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-project-summary.webp b/doc/qtcreator/images/qtcreator-new-project-summary.webp new file mode 100644 index 00000000000..9a0babbf7e7 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-summary.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-translation-file.webp b/doc/qtcreator/images/qtcreator-new-project-translation-file.webp new file mode 100644 index 00000000000..7a7549e7d75 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-translation-file.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp index 14494a04d37..19dedb05a24 100644 Binary files a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp and b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-qt-quick-empty-project-location.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-qt-quick-empty-project-location.webp index 006338957fb..9e05b9dc92b 100644 Binary files a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-qt-quick-empty-project-location.webp and b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-qt-quick-empty-project-location.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp index 681df512fbe..d8883c7168d 100644 Binary files a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp and b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp index 7e0a84b9382..8d61b5bc215 100644 Binary files a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp and b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp deleted file mode 100644 index 2e6368d9141..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-gui-application-translationfile.png b/doc/qtcreator/images/qtcreator-new-qt-gui-application-translationfile.png deleted file mode 100644 index 27282a68e8a..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-qt-gui-application-translationfile.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-qt-gui-application.png b/doc/qtcreator/images/qtcreator-new-qt-gui-application.png deleted file mode 100644 index d2b3496c301..00000000000 Binary files a/doc/qtcreator/images/qtcreator-new-qt-gui-application.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp b/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp index 4656ab1d80d..1a1520909f1 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp and b/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp differ diff --git a/doc/qtcreator/images/qtcreator-project-qt-quick-details.webp b/doc/qtcreator/images/qtcreator-project-qt-quick-details.webp index ab33bfb8350..56da5804372 100644 Binary files a/doc/qtcreator/images/qtcreator-project-qt-quick-details.webp and b/doc/qtcreator/images/qtcreator-project-qt-quick-details.webp differ diff --git a/doc/qtcreator/images/qtcreator-project-settings-copilot.webp b/doc/qtcreator/images/qtcreator-project-settings-copilot.webp new file mode 100644 index 00000000000..8041f0ab93c Binary files /dev/null and b/doc/qtcreator/images/qtcreator-project-settings-copilot.webp differ diff --git a/doc/qtcreator/images/qtcreator-refactoring-options-templates.png b/doc/qtcreator/images/qtcreator-refactoring-options-templates.png deleted file mode 100644 index a5e53b37bc9..00000000000 Binary files a/doc/qtcreator/images/qtcreator-refactoring-options-templates.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-refactoring-options-templates.webp b/doc/qtcreator/images/qtcreator-refactoring-options-templates.webp new file mode 100644 index 00000000000..4567b77ebb2 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-refactoring-options-templates.webp differ diff --git a/doc/qtcreator/src/analyze/creator-axivion.qdoc b/doc/qtcreator/src/analyze/creator-axivion.qdoc index 53735a9c31a..8f0a00e01ca 100644 --- a/doc/qtcreator/src/analyze/creator-axivion.qdoc +++ b/doc/qtcreator/src/analyze/creator-axivion.qdoc @@ -179,11 +179,10 @@ \li Go to \uicontrol Projects > \uicontrol {Project Settings} > \uicontrol Axivion. \image qtcreator-preferences-axivion-project.webp {Axivion settings in Project Settings} - \li From \uicontrol {Dashboard} select one of the configured Axivion - dashboard configurations. - \li Select \uicontrol {Fetch Projects} to list projects from Axivion. - \li Select a project, and then select \uicontrol {Link Project} to link - to it. + \li Select the Axivion dashboard server to fetch projects from. + \li Select \uicontrol {Fetch Projects} to list projects from the server. + \li In \uicontrol {Dashboard projects} select a project. + \li Select \uicontrol {Link Project} to link to the project. \endlist To unlink a project, select \uicontrol {Unlink Project}. diff --git a/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc b/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc index 8f02ee0607e..473bea2bd8a 100644 --- a/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc +++ b/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc @@ -60,32 +60,32 @@ The \uicontrol Timeline view displays a graphical representation of trace events and a condensed view of all recorded events. - \image qtcreator-ctf-visualizer-timeline.png "Chrome Trace Format Visualizer" + \image qtcreator-ctf-visualizer-timeline.webp {Timeline view} Each category in the timeline describes a thread in the application. Move - the cursor on an event (1) on a row to view its duration and event category. + the cursor on an event (5) on a row to view its duration and event category. To display the information only when an event is selected, disable the - \uicontrol {View Event Information on Mouseover} button (2). + \uicontrol {View Event Information on Mouseover} button (4). - The outline (3) summarizes the period for which data was collected. Drag - the zoom range (4) or click the outline to move on the outline. To move + The outline (10) summarizes the period for which data was collected. Drag + the zoom range (8) or click the outline to move on the outline. To move between events, select the \uicontrol {Jump to Previous Event} and - \uicontrol {Jump to Next Event} buttons (5). + \uicontrol {Jump to Next Event} buttons (1). - Select the \uicontrol {Show Zoom Slider} button (6) to open a slider that - you can use to set the zoom level. You can also drag the zoom handles (7). + Select the \uicontrol {Show Zoom Slider} button (2) to open a slider that + you can use to set the zoom level. You can also drag the zoom handles (9). To reset the default zoom level, right-click the timeline to open the context menu, and select \uicontrol {Reset Zoom}. Select the \inlineimage icons/filtericon.png - (\uicontrol {Restrict to Threads}) button (10) to select the threads to + (\uicontrol {Restrict to Threads}) button (6) to select the threads to show. \section2 Selecting Event Ranges - You can select an event range (8) to view the time it represents or to zoom + You can select an event range (7) to view the time it represents or to zoom into a specific region of the trace. Select the \uicontrol {Select Range} - button (9) to activate the selection tool. Then click in the timeline to + button (3) to activate the selection tool. Then click in the timeline to specify the beginning of the event range. Drag the selection handle to define the end of the range. diff --git a/doc/qtcreator/src/android/deploying-android.qdoc b/doc/qtcreator/src/android/deploying-android.qdoc index 75f497cc6d7..84107b00ef4 100644 --- a/doc/qtcreator/src/android/deploying-android.qdoc +++ b/doc/qtcreator/src/android/deploying-android.qdoc @@ -227,7 +227,7 @@ If you use CMake as the build system, you must specify the Android package source directory, \c QT_ANDROID_PACKAGE_SOURCE_DIR, in the CMakeList.txt - file, as instructed in the \l{Locking Device Orientation} + file, as instructed in the \l{Lock device orientation} {mobile device tutorial}. To use \QC to create an Android manifest file and to open it in the Android diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc index 4e0160ba9eb..a749acd41ac 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc @@ -126,6 +126,9 @@ To speed up the process on Windows, specify the \c CMAKE_C_COMPILER and \c CMAKE_CXX_COMPILER in the \c cacheVariables section. + For possible values of some of the \c debugger parameters, see + \l{Adding Debuggers}. + \section1 Ninja Generator Example The following configure and build presets set Ninja Multi-Config as the @@ -297,5 +300,5 @@ } \endcode - \sa {CMake Build Configuration}, {CMake} + \sa {CMake Build Configuration}, {CMake}, {SDK Tool} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc index 964bbaf5e1b..dd12571c8dc 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc @@ -1,4 +1,4 @@ -// Copyright (C) 2018 The Qt Company Ltd. +// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // ********************************************************************** @@ -14,11 +14,12 @@ \ingroup creator-tutorials - \title Debugging a C++ Application + \keyword {Debugging a C++ Application} + \title Tutorial: C++ debugging \brief How to debug a C++ application. - This tutorial uses the \l{Creating a Qt Widget Based Application}{TextFinder} + This tutorial uses the \l{Tutorial: Qt Widgets application}{TextFinder} example to illustrate how to debug Qt C++ applications in the \uicontrol Debug mode. @@ -95,5 +96,5 @@ (\uicontrol {Step Into}), and \inlineimage icons/debugger_stepout_small.png (\uicontrol {Step Out}). - \sa {Creating a Qt Widget Based Application}, {Debugging}, {Debuggers}, {Debugger} + \sa {Tutorial: Qt Widgets application}, {Debugging}, {Debuggers}, {Debugger} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index a6bc84a87b0..b59003193aa 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -140,7 +140,7 @@ \l{https://docs.python.org/3/library/pdb.html}{PDB} is a source code debugger for Python applications. You can use it to debug projects that have a - \l {Creating a Qt for Python Application with Qt Widgets}{.pyproject} + \l {Tutorial: Qt Widgets and Python}{.pyproject} configuration file. Install Python and set the interpreter to use in \uicontrol Projects diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index 6880c27b5a2..f941fda579e 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -207,9 +207,9 @@ expressions. For more information, see \l{Debugging Qt Quick Projects} and - \l{Debugging a Qt Quick Application}. + \l{Tutorial: Qt Quick debugging}. - \sa {Debugging a C++ Application}, {Debug}{How To: Debug}, {Debuggers}, + \sa {Tutorial: C++ debugging}, {Debug}{How To: Debug}, {Debuggers}, {Debugger}, {Kits} */ @@ -263,7 +263,7 @@ \section1 Debug Python projects - For \l {Creating a Qt for Python Application with Qt Widgets}{Python} projects, + For \l {Tutorial: Qt Widgets and Python}{Python} projects, start debugging the \c main.py file. If you encounter problems, check the active build target in the \l{Build for many platforms}{kit selector}. diff --git a/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc b/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc index e7141a99f22..18f410b49dd 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc @@ -19,7 +19,8 @@ \ingroup creator-tutorials - \title Debugging a Qt Quick Application + \keyword {Debugging a Qt Quick Application} + \title Tutorial: Qt Quick debugging \brief How to debug a Qt Quick application. diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc index e44a2f93fc9..d0b227bf436 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc @@ -26,7 +26,7 @@ JavaScript variables, as well as change their values temporarily at runtime. For an example of how to debug Qt Quick Projects, see - \l{Debugging a Qt Quick Application}. + \l{Tutorial: Qt Quick debugging}. \if defined(qtdesignstudio) \note In this section, you are using advanced menu items. These are not diff --git a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc index b3ded10f5d9..8bcbfd723c4 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc @@ -98,14 +98,24 @@ You can turn the Copilot suggestions on and off either globally for all projects or at project level for a particular project. + \section2 Toggle Copilot suggestions + To turn Copilot suggestions on or off globally, select \inlineimage icons/copilot.png (\uicontrol {Toggle Copilot}). This also sets the value of \uicontrol {Enable Copilot} in \preferences > \uicontrol Copilot accordingly. - To turn Copilot suggestions on or off for a particular project, - go to \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol Copilot and then select or clear \uicontrol {Enable Copilot}. + \section2 Turn suggestions on or off for a project + + To turn Copilot suggestions on or off for a particular project: + + \list 1 + \li Go to \uicontrol Projects > \uicontrol {Project Settings} > + \uicontrol Copilot. + \image qtcreator-project-settings-copilot.webp {Copilot project settings} + \li Clear \uicontrol {Use global settings}. + \li Select or clear \uicontrol {Enable Copilot}. + \endlist \sa {Enable and disable plugins}, {Edit Mode} */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc index ad5577b7a9b..011ea869b2e 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc @@ -58,7 +58,7 @@ and \c to access the parameter and current value. Use \c to access the type and \c for the template parameter. - \image qtcreator-refactoring-options-templates.png {Settings for handling custom parameter types} + \image qtcreator-refactoring-options-templates.webp {Settings for handling custom parameter types} Usually, arguments are passed by using a \c const reference. To pass arguments of a particular type as values, list them in the diff --git a/doc/qtcreator/src/howto/creator-help.qdoc b/doc/qtcreator/src/howto/creator-help.qdoc index fa770177839..530937337cc 100644 --- a/doc/qtcreator/src/howto/creator-help.qdoc +++ b/doc/qtcreator/src/howto/creator-help.qdoc @@ -39,10 +39,16 @@ \uicontrol Help mode, go to \preferences > \uicontrol Help. \endlist + \if defined(qtdesignstudio) + The following image shows the context sensitive help in the \l Code view. + + \image qds-help-in-code-view.webp {Context-sensitive help in the Code view.} + \else The following image shows the context sensitive help in the \uicontrol Edit mode. \image qtcreator-context-sensitive-help.webp {Context-sensitive help in Edit mode} + \endif \section1 Change the font @@ -88,7 +94,13 @@ To use a keyboard shortcut for viewing help tooltips, select \uicontrol {Show help tooltips using keyboard shortcut (Alt)}. + \if defined(qtdesignstudio) + \section1 See Also + + \generatelist creator-how-to-get-help + \else \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -140,7 +152,9 @@ \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -180,7 +194,9 @@ \uicontrol General and select \uicontrol {Import Bookmarks} or \uicontrol {Export Bookmarks}. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -236,7 +252,9 @@ punctuation, such as domain names, use the asterisk as a wild card. For example, to find \c {Pastebin.Com}, enter the search term \c {Pastebin*}. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -268,7 +286,9 @@ \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -287,7 +307,11 @@ code editor when you press \key F1. If there is not enough vertical space, the help opens in the full-screen help mode. + \if defined(qtdesignstudio) + \image qds-help-in-code-view.webp {Context-sensitive help in the Code view.} + \else \image qtcreator-context-sensitive-help.webp {Context-sensitive help in Edit mode} + \endif To specify that the help always opens in full-screen mode or in an external window, go to \preferences > \uicontrol Help > \uicontrol General. @@ -300,7 +324,9 @@ To change this setting in a help view, select \inlineimage icons/linkicon.png. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -335,7 +361,9 @@ home page. \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -401,5 +429,7 @@ To remove the selected filter, select \inlineimage icons/minus.png. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ diff --git a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc index f41033c3e0d..8c54ecbe91c 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc @@ -39,18 +39,18 @@ \li \inlineimage icons/tutorials.png \li \inlineimage icons/api-reference.png \row - \li \b {\l{Building and Running an Example}} + \li \b {\l{Tutorial: Build and run}{Building and Running an Example}} To check that \l{https://www.qt.io/download-qt-installer} {\QOI} created \l{Kits} {build and run kits}, open an example application and run it. If you have not done so before, go to - \l{Building and Running an Example}. + \l{Tutorial: Build and run}. \li \b {\l{Tutorials}} Now you are ready to start developing your own applications. Pick a tutorial to follow in \l{Tutorials}. To start developing - for mobile devices, select \l{Creating a Mobile Application}. + for mobile devices, select \l{Tutorial: Mobile application}. \li \b{\l {Qt Documentation}} For more examples, as well as the details about using Qt tools diff --git a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc index 03e81452f75..fa33afb2a41 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc @@ -114,6 +114,8 @@ \section2 Debugger + Preferences for debugging. + \annotatedlist creator-reference-preferences-debugger \section2 Kits diff --git a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc index 83808a6a1e0..bef1f7cbb8f 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc @@ -150,7 +150,7 @@ \list 1 \li Select \uicontrol File > \uicontrol {New File} > \uicontrol {Qt} > \uicontrol {Qt Resource File} > \uicontrol Choose. - \image qtcreator-add-resource-wizard.png {New File dialog} + \image qtcreator-new-file-qrc.webp {New File dialog} \li Follow the instructions of the wizard to create a resource collection file (.qrc). \li Open the resource file in the resource editor. diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc index e6cb582b9bc..60cc8f4d7e0 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc @@ -6,6 +6,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-create + \ingroup creator-how-to-projects-files \title Add wizards diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc index eb8e2a14ee1..206e028e348 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc @@ -14,7 +14,8 @@ \ingroup creator-tutorials - \title Building and Running an Example + \keyword {Building and Running an Example} + \title Tutorial: Build and run \brief How to build and run a Qt example. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 92858ff6078..7bf47440696 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -52,7 +52,7 @@ which plugins you have installed. If you do not get to choose, the project usually uses CMake as the build system. - \image qtcreator-new-project-build-system-qt-gui.png {Define Build System dialog} + \image qtcreator-new-project-build-system.webp {Define Build System dialog} You can use wizards also to create plain C or C++ projects that use qmake, Qbs, or CMake, but do not use the Qt library. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc index f2d8d254249..d6b714bb7c7 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc @@ -52,13 +52,13 @@ translations in the .json file using the following syntax: \code - "trDisplayName": { "C": "default", "en_US": "english", "de_DE": "deutsch" } + "trDisplayName": { "C": "default", "en": "english", "de": "deutsch" } \endcode For example: \code - "trDisplayName": { "C": "Project Location", "en_US": "Project Location", "de_DE": "Projekt Verzeichnis" } + "trDisplayName": { "C": "Project Location", "en": "Project Location", "de": "Projektverzeichnis" } \endcode \section1 Creating Wizards diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc index fc66a62e8a7..4dfbc400c01 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc @@ -91,7 +91,7 @@ For more information about the project file settings, see \l{Declaring Other Libraries}{qmake Manual: Declaring Other Libraries}. - \sa {Using an Internal Library in a qmake Project}{Tutorial: Using an Internal Library in a qmake Project}, + \sa {Tutorial: Use internal libraries with qmake}, {Add subprojects to projects}, {Add libraries to CMake projects}, {Use project wizards}, {Creating Projects} */ @@ -103,7 +103,7 @@ \ingroup creator-tutorials - \title Using an Internal Library in a qmake Project + \title Tutorial: Use internal libraries with qmake \brief How to create your own library and link your application against it when using qmake as the build system. @@ -114,7 +114,7 @@ \note This tutorial only applies when you select qmake as the build system for the subdirs project. - \section1 Creating a shared library + \section1 Create a shared library To create a shared library: @@ -154,7 +154,7 @@ list, select a subdirs project. For example, \e MyApplication. \endlist - \section1 Linking an application to the library + \section1 Link an application to the library To link a project to the shared library: diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index db6aefeb64c..cd839283baf 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -59,7 +59,7 @@ To change the values of environment variables for the build environment, select the variable and then select \uicontrol Edit. Enter the new value - in the editor on the righ side. + in the editor on the right side. To add new variables, select \uicontrol {Add}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 2a032dabf75..942c42bddcf 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -85,7 +85,7 @@ \li \l{Specify clangd settings}{Clangd} \li \l{Specify Clang tools settings}{Clang Tools} \li \l{Override CMake settings for a project}{CMake} - \li \l{Set Copilot preferences}{Copilot} + \li \l{Turn suggestions on or off for a project}{Copilot} \li \l{Configure C++ code model}{C++ Code Model} \li \l{Specify code style}{C++ Code Style} \li \l{Set C++ file naming preferences}{C++ File Naming} diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc index 09898e8f56e..11c3c984301 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc @@ -16,9 +16,10 @@ \title Share project settings \QC stores user-specific project settings in a \e {.user} file. You can - share these settings between several projects as a \e {.shared} file. It - has the same XML structure as a \e {.user} file, but only has the - settings to share. + share these settings between several projects as a \e {.shared} file + (such as, \c {CMakeLists.txt.shared}, \c {qtcreator.pro.shared}, or + \c {qtcreator.qbs.shared}). It has the same XML structure as a \e {.user} + file, but only has the settings to share. To share CMake project settings, use \l{CMake Presets} or a \c {CMakeLists.txt.shared} file. diff --git a/doc/qtcreator/src/python/creator-python-development.qdoc b/doc/qtcreator/src/python/creator-python-development.qdoc index 10f054dcdab..f98aff41fa2 100644 --- a/doc/qtcreator/src/python/creator-python-development.qdoc +++ b/doc/qtcreator/src/python/creator-python-development.qdoc @@ -35,8 +35,9 @@ \section1 Set up PySide6 - If you have not installed the required version of PySide6, \QC prompts you to - do so when you open a .py file. + The recommended way to run PySide6 projects from \QC is to install PySide6 + for each project. \QC prompts you to do so the first time you open a .py file + for a project. \image qtcreator-python-install.webp {Prompts to install PySide6 and Python language server} @@ -55,12 +56,6 @@ \QD form, and the Qt Quick Application wizard creates a \c {.qml} file that imports Qt Quick controls. - \note Before importing UI classes and after editing them, create the Python - code from your UI form. In PySide6, run \c{pyside6-uic form.ui -o ui_form.py} - in the \l Terminal view. - - \image qtcreator-new-qt-for-python-app-window-ui-uic.webp {Creating Python code in Terminal} - The \uicontrol Window wizard adds code to the source file, without the UI file. @@ -113,7 +108,7 @@ \uicontrol {REPL Import File}. To also import all functions from the file, select \uicontrol {REPL Import *}. - \sa {Creating a Qt for Python Application with Qt Widgets}, - {Creating a Qt for Python Application with Qt Quick}, + \sa {Tutorial: Qt Widgets and Python}, {Tutorial: Qt Widgets UI and Python}, + {Tutorial: Qt Quick and Python}, {Activate kits for a project} */ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets-ui.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets-ui.qdoc new file mode 100644 index 00000000000..f7aa1238777 --- /dev/null +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets-ui.qdoc @@ -0,0 +1,115 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-tutorial-python-application-qt-widgets-ui.html + \previouspage creator-tutorials.html + \nextpage creator-how-tos.html + + \ingroup creator-tutorials + + \title Tutorial: Qt Widgets UI and Python + + \brief How to develop a Qt widget-based application that contains a + \l {UI file} (.ui) with Python. + + First, create a Qt for Python application project. Then, use the integrated + \QD to design a widgets-based UI. + + \image qtcreator-new-project-python-window-ui-ready.webp {A small Qt Widgets application} + + For more examples of creating Qt for Python applications, see + \l {https://doc.qt.io/qtforpython/tutorials/index.html} + {Qt for Python Examples and Tutorials}. + + \section1 Create a window UI project + + To create a Qt for Python application that has the source file for a main + class: + + \list 1 + \li Go to \uicontrol File > \uicontrol {New Project}. + \li Select \uicontrol {Application (Qt for Python)} > + \uicontrol {Window UI} > \uicontrol Choose to open the + \uicontrol {Project Location} dialog. + \image qtcreator-new-project-python-window-ui.webp {Project Location dialog} + \li In \uicontrol {Name}, enter the project name. For example, + \e {hello_world_ui}. + \li In \uicontrol {Create in}, enter the path for the project files. + For example, \c {C:\Examples}. + \li Select \uicontrol{Next} (on Windows and Linux) or \uicontrol Continue + (on \macos) to open the \uicontrol {Define Class} dialog. + \image qtcreator-new-project-python-window-ui-define-class.webp {Define Class dialog} + \li In \uicontrol {Class name}, select \b {MainWindow} as the class + name. + \li In \uicontrol {Base class}, select \b {QMainWindow} as the base class. + \note The \uicontrol {Source file} field is automatically updated to + match the name of the class. + \li In \uicontrol {Project file}, enter a name for the project file. + \li Select \uicontrol{Next} or \uicontrol Continue to open the + \uicontrol {Define Python Interpreter} dialog. + \image qtcreator-new-project-python-window-ui-define-python-interpreter.webp {Define Python Interpreter dialog} + \li In \uicontrol {PySide version}, select the PySide version of the + generated code. + \li Select \uicontrol {Next} or \uicontrol {Continue} to open the + \uicontrol {Kit Selection} dialog. + \image qtcreator-new-project-qt-for-python-kit-selection.webp {Selecting a kit for a Python project} + \li Select Python kits for building, deploying, and running the + project. By default, this creates a virtual environment for the + project inside the source directory. To use the global interpreter, + select the build configuration with the same name as the Python of + the kit in \uicontrol {Details}. + \li Select \uicontrol {Next} or \uicontrol {Continue}. + \li Review the project settings, and select \uicontrol {Finish} (on + Windows and Linux) or \uicontrol Done (on \macos) to create the + project. + \endlist + + The wizard generates the following files: + + \list + \li \c {form.ui}, which is the UI file for the window UI. + \li \c {hello_world_ui.pyproject}, which lists the files in the Python + project. + \li \c {mainwindow.py}, which has some boilerplate code for a class. + \li \c {reguirements.txt}, which stores the PySide version of the + generated code. You can use this file to install the required PySide + version using pip. + \endlist + + \include creator-tutorial-python-application-qtquick.qdoc install-pyside6 + + \section1 Design a widgets-based UI + + \list 1 + \li In the \uicontrol {Edit} mode, double-click the \c {form.ui} file + in the \uicontrol{Projects} view to launch the integrated \QD. + \li Drag the following widgets from \uicontrol {Widget Box} to the form: + \list + \li \uicontrol {Text Edit} (QTextEdit) + \li \uicontrol {Check Box} (QCheckBox) + \li \uicontrol {Push Button} (QPushButton) + \endlist + \image qtcreator-new-project-python-window-ui-widgets.webp {Adding widgets to the UI} + \note To easily locate the widgets, use the search box at the top of the + \uicontrol {Widget Box}. For example, to find the \uicontrol {Text Edit} + widget, start typing the word \b text. + \li Double-click the \uicontrol {Text Edit} widget and enter the text + \b{Enter text here}. + \li Double-click the \uicontrol {Check Box} widget and enter the text + \b{Select me}. + \li Double-click the \uicontrol {Push Button} widget and enter the text + \b{Click me}. + \li Press \key {Ctrl+S} (or \key {Cmd+S}) to save your changes. + \endlist + + For more information about designing UIs with \QD, see \l{\QD Manual}. + + \section1 Run the application + + Select the \inlineimage icons/run_small.png + button to run the application. + + \sa {Tutorial: Qt Quick and Python}, {Tutorial: Qt Widgets and Python}, + {Develop Qt for Python Applications} +*/ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc index 13b1f216380..b6eec3cb167 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc @@ -8,7 +8,8 @@ \ingroup creator-tutorials - \title Creating a Qt for Python Application with Qt Widgets + \keyword {Creating a Qt for Python Application with Qt Widgets} + \title Tutorial: Qt Widgets and Python \brief How to develop a Qt widget-based application with Python. @@ -22,7 +23,7 @@ \l {https://doc.qt.io/qtforpython/tutorials/index.html} {Qt for Python Examples and Tutorials}. - \section1 Creating an Empty Window Project + \section1 Create an empty window project To create a Qt for Python application that has the source file for a main class: @@ -75,7 +76,9 @@ using pip. \endlist - \section1 Adding Qt Widgets Imports + \include creator-tutorial-python-application-qtquick.qdoc install-pyside6 + + \section1 Add Qt Widgets imports The wizard adds the imports to the \c mywidget.py source file for access to the QApplication and the base class you selected in the Qt Widgets module, @@ -90,7 +93,7 @@ from PySide6 import QtCore, QtWidgets \endcode - \section1 Adding a Widgets-Based UI + \section1 Add a widgets-based UI The wizard adds a main class with the specified name that inherits from the specified base class: @@ -118,7 +121,7 @@ ... \endcode - \section1 Adding Signals and Slots + \section1 Add signals and slots Then, add a signal and a slot to implement the random function: @@ -131,7 +134,7 @@ self.text.setText(random.choice(self.hello)) \endcode - \section1 Adding a Main Function + \section1 Add a main function The wizard adds a main function, where it creates a QApplication instance. As Qt can receive arguments from the command line, you can pass any arguments to @@ -144,7 +147,7 @@ ... \endcode - \section1 Instantiating the MainWindow Class + \section1 Instantiate the MainWindow class The wizard instantiates the \c MainWindow class and shows it: @@ -155,7 +158,7 @@ ... \endcode - \section1 Executing the Qt Code + \section1 Execute the Qt Code Finally, the wizard calls the \c app.exec() method to enter the Qt main loop and start executing the Qt code: @@ -165,11 +168,11 @@ sys.exit(app.exec()) \endcode - \section1 Running the Application + \section1 Run the application Select the \inlineimage icons/run_small.png button to run the application. - \sa {Creating a Qt for Python Application with Qt Quick}, + \sa {Tutorial: Qt Quick and Python}, {Tutorial: Qt Widgets UI and Python}, {Develop Qt for Python Applications} */ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc index f8570d1bbad..df3218197b3 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc @@ -8,7 +8,8 @@ \ingroup creator-tutorials - \title Creating a Qt for Python Application with Qt Quick + \keyword {Creating a Qt for Python Application with Qt Quick} + \title Tutorial: Qt Quick and Python \brief How to develop a Qt Quick application with Python. @@ -22,7 +23,7 @@ \l {https://doc.qt.io/qtforpython/tutorials/index.html} {Qt for Python Examples and Tutorials}. - \section1 Creating an Empty Project + \section1 Create an empty project To create a Qt for Python application that has a main QML file: @@ -65,7 +66,16 @@ using pip. \endlist - \section1 Adding Qt Quick Imports + //! [install-pyside6] + \section1 Install PySide6 for the project + + In the \uicontrol {Edit} mode, select \uicontrol {Install} to set up PySide6 + for the project. + + \image qtcreator-python-install.webp {Prompt to install PySide6} + //! [install-pyside6] + + \section1 Add Qt Quick imports The wizard adds the following imports to the \c {main.py} source file for access to QGuiApplication and QQmlApplicationEngine: @@ -78,7 +88,7 @@ from PySide6.QtQml import QQmlApplicationEngine \endcode - \section1 Adding a Main Function + \section1 Add a main function The wizard also adds a main function, where it creates a QGuiApplication instance and passes system arguments to the QGuiApplication object: @@ -89,7 +99,7 @@ ... \endcode - \section1 Loading the QML File + \section1 Load the QML file The following lines in the main class create a QQmlApplicationEngine instance and load the generated QML file to the engine object: @@ -115,12 +125,12 @@ ... \endcode - \section1 Designing the UI + \section1 Design the UI Open the \c {main.qml} file in the \uicontrol Edit mode to design a Qt Quick UI. - \section2 Adding Imports + \section2 Add imports Add imports for Qt Quick Controls and Layouts: @@ -131,7 +141,7 @@ import QtQuick.Layouts \endcode - \section2 Adding Properties and Functions + \section2 Add properties and functions The wizard adds a main window: @@ -158,7 +168,7 @@ } \endcode - \section2 Adding Qt Quick Controls + \section2 Add Qt Quick Controls Add \l {Text} and \l {Button} QML types within a \l {ColumnLayout} type to design the UI: @@ -182,11 +192,10 @@ You can also use \l{Qt Design Studio Manual}{\QDS} to design Qt Quick UIs. - \section1 Running the Application + \section1 Run the application - Select the \inlineimage icons/run_small.png - button to run the application. + Select \inlineimage icons/run_small.png to run the application. - \sa {Creating a Qt for Python Application with Qt Widgets}, + \sa {Tutorial: Qt Widgets and Python}, {Tutorial: Qt Widgets UI and Python}, {Develop Qt for Python Applications} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc index b6f01f38a59..60c9b29f4df 100644 --- a/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc @@ -7,7 +7,8 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Mobile Application + \keyword {Creating a Mobile Application} + \title Tutorial: Mobile application \brief How to create a Qt Quick application that uses Qt Quick Controls and runs on Android and iOS devices. @@ -24,7 +25,7 @@ \image creator_android_tutorial_ex_app.png - \section1 Setting up the Development Environment + \section1 Set up the development environment To build the application for and run it on a mobile device, you must set up the development environment for the device platform and configure a @@ -41,7 +42,7 @@ \include qtquick-tutorial-create-empty-project.qdocinc qtquick empty application - \section1 Adding Images as Resources + \section1 Add images as resources The main view of the application displays an SVG bubble image that moves around the screen when you tilt the device. @@ -54,7 +55,7 @@ \skipto qt_add_qml_module \printuntil ) - \section1 Creating the Accelbubble Main View + \section1 Create the Accelbubble main view Create the main view in the \e main.qml file by adding an \l Image component with \e Bluebubble.svg as the source: @@ -113,7 +114,7 @@ \printuntil } \printuntil } - \section1 Locking Device Orientation + \section1 Lock device orientation The device display is rotated by default when the device orientation changes between portrait and landscape. For this example, it would be @@ -153,7 +154,7 @@ \skipto set_target_properties \printuntil ) - \section1 Adding Dependencies + \section1 Add dependencies You must tell the build system which Qt modules your application needs by specifying dependencies in the project file. Select \uicontrol Projects to @@ -184,7 +185,7 @@ For more information about the CMakeLists.txt file, see \l{Getting started with CMake}. - \section1 Running the Application + \section1 Run the application You can now deploy the application to a device: diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc index b3b91a8d89e..ab1e9afe08c 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc @@ -7,7 +7,8 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Qt Quick Application + \keyword {Creating a Qt Quick Application} + \title Tutorial: Qt Quick application \brief How to create a Qt Quick Application in the \uicontrol Edit mode. @@ -33,7 +34,7 @@ \QC generates a component file, \e Main.qml, and opens it in the \uicontrol Edit mode. - \section1 Deploying Applications + \section1 Deploy applications The main view of the application displays a Qt logo inside a rectangle in the top left corner of the view and two empty rectangles. @@ -46,7 +47,7 @@ \skipto qt_add_qml_module \printuntil ) - \section1 Creating Custom QML Types + \section1 Create a custom QML type Because the \l Window QML type requires that you add states into child components, use the wizard to create a custom QML type called @@ -58,7 +59,7 @@ \li Go to \uicontrol File > \uicontrol {New File}. \li Select \uicontrol Qt > \uicontrol {QML File (Qt Quick 2)}. \li Select \uicontrol Choose to open the \uicontrol Location dialog. - \li In the \uicontrol {File name} field, enter a name for the custom + \li In \uicontrol {File name}, enter a name for the custom QML type: \e Page. \li Select \uicontrol Next to open the \uicontrol {Project Management} dialog. @@ -117,7 +118,7 @@ Next, make the image move between the rectangles when users click them by adding states and by connecting mouse clicks to state changes. - \section1 Connecting Mouse Clicks to State Changes + \section1 Connect mouse clicks to state changes To make the image move between the rectangles when users click them, add states to the Page component where you change the values of the \c x and @@ -139,7 +140,7 @@ Because you develop with Qt 6, you must specify the connections as functions. - \section1 Adding Page to the Main View + \section1 Add Page to the main view Open \e Main.qml for editing and add an instance of the Page custom component to it: @@ -151,7 +152,7 @@ Press \key {Ctrl+R} to run the application, and click the rectangles to move the Qt logo from one rectangle to another. - \section1 Animating Transitions + \section1 Animate transitions Create transitions to apply animation to the image. For example, the image bounces back when it moves to \e middleRightRect and eases into diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc index f7181c59cf1..6864010554e 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc @@ -95,9 +95,9 @@ \QC creates a QML file, \e Main.qml, that you can modify in the \uicontrol Edit mode. - \sa {Create Qt Quick UI Prototypes}, {Creating a Mobile Application}, - {Creating a Qt for Python Application with Qt Quick}, - {Creating a Qt Quick Application}, {Creating Projects}, + \sa {Create Qt Quick UI Prototypes}, {Tutorial: Mobile application}, + {Tutorial: Qt Quick and Python}, + {Tutorial: Qt Quick application}, {Creating Projects}, {Developing Qt Quick Applications} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc index 22d887c161c..03abe50380a 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc @@ -4,11 +4,11 @@ /*! //! [qtquick empty application] - \section1 Creating the Project + \section1 Create the project \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > + \li Go to \uicontrol File > \uicontrol {New Project} > \uicontrol {Application (Qt)} > \uicontrol {Qt Quick Application}. \image qtcreator-project-qt-quick.webp {New Project dialog} @@ -16,11 +16,11 @@ \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 \uicontrol Name, enter a name for the application. When naming your own projects, keep in mind that you cannot easily rename them later. - \li In the \uicontrol {Create in} field, enter the path for the project + \li In \uicontrol {Create in}, enter the path for the project files. You can move project folders later without problems. \li Select \uicontrol Next to open the @@ -28,11 +28,10 @@ \image qtcreator-project-qt-quick-details.webp {Define Project Details dialog} - \li Deselect the \uicontrol {Create a project that you can open in \QDS} - check box. + \li Clear \uicontrol {Create a project that you can open in \QDS}. \note This tutorial shows how to create the application in the - \uicontrol Edit mode. If you leave the check box selected, the + \uicontrol Edit mode. If you leave the checkbox selected, the following instructions won't apply. \li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog. diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc index eb74c5b547d..4449f9e1bab 100644 --- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc @@ -160,7 +160,7 @@ \if defined(qtdesignstudio) \note In this section, you are using advanced menu items. These are not visible by default. To toggle the visibility of advanced menu items, see - \l{Customizing the Menu}. + \l{Customizing the Menu Bar}. \endif With QML Profiler, you can find causes for typical performance problems diff --git a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc index 78641697655..96a313b8b45 100644 --- a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc @@ -107,6 +107,6 @@ To pin toolbars by default, select \uicontrol {Pin Qt Quick Toolbar}. \if defined(qtcreator) - \sa {Creating a Qt Quick Application} + \sa {Tutorial: Qt Quick application} \endif */ diff --git a/doc/qtcreator/src/reference/creator-sdk-tool.qdoc b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc new file mode 100644 index 00000000000..546b5fdf22c --- /dev/null +++ b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc @@ -0,0 +1,760 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-sdk-tool.html + \previouspage creator-reference.html + + \ingroup creator-reference + + \title SDK Tool + + \brief Configure CMake and set up compilers, debuggers, devices, Qt versions, + and kits from the command line. + + \QOI uses the SDK Tool (\c sdktool) to configure CMake and set \l {Kits}{Kit} + preferences, such as compilers, debuggers, devices, and Qt versions. You can + use it from the command line to set Qt and \QC preferences automatically for + all users of a computer, for example. For a single user, it is usually easier + to make changes in \preferences > \uicontrol Kits. + + To use the SDK Tool, enter the following command in the \c {Tools\sdktool\bin} + directory in the Qt installation directory: + + \badcode + sdktool [OPTION] [OPERATION [OPTIONS]] + \endcode + + For information about the options and operations that your SDK Tool version + supports, enter: + + \badcode + sdktool --help + \endcode + + \section1 Value Types + + The operations add settings in the form \c { :} to the + configuration that they create. The supported \c TYPE values are: + + \list + \li \c bool + \li \c int + \li \l QByteArray + \li \l QString + \li \l QVariantList + \endlist + + \section1 SDK Path + + \QOI and the \QC stand-alone installer both install \c sdktool. The + \c sdktool from an installer defaults to the location from where the \QC + from the installer reads the information that the SDK Tool writes. + To point \c sdktool to some other \QC installation, set \c --sdkpath + depending on whether you use \QOI or an offline installer. + + \list + \li \QOI: \c {/Tools/sdktool} + \li \QC stand-alone installer: + \list + \li On Windows and Linux: \c {/share/qtcreator/} + \li On \macos \c {Qt Creator.app/Contents/Resources/} + \endlist + \endlist + + \section1 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \row + \li \c {--help | -h} + \li Display help on SDK tool options. + + Enter \c {--help } to get help on the options + required for the operation. + \row + \li \c {--sdkpath= | -s } + \li Set the path to the files that the SDK tool writes. + \endtable + + \section1 Operations + + The following table summarizes the available operations. + + \table + \header + \li Operation + \li Description + \row + \li addAbiFlavor + \li Add a system architecture (ABI). + \row + \li \c {addCMake} + \li Add the path to a CMake tool. + \row + \li \c {addDebugger} + \li Add a debugger. + \row + \li \c {addDev} + \li Add a device. + \row + \li \c {addKeys} + \li Add settings as \c { :} key-value pairs. + \row + \li \c {addKit} + \li Add a build and run kit. + \row + \li \c {addQt} + \li Add a Qt version. + \row + \li \c {addTC} + \li Add a compiler. + \row + \li \c {find} + \li Find a setting value. + \row + \li \c {findKey} + \li Find a setting key. + \row + \li \c {get} + \li Get settings. + \row + \li \c {rmCMake} + \li Remove the path to a CMake tool. + \row + \li \c {rmDebugger} + \li Remove a debugger. + \row + \li \c {rmDev} + \li Remove a device + \row + \li \c {rmKeys} + \li Remove settings. + \row + \li \c {rmQt} + \li Remove a Qt version. + \row + \li \c {rmTC} + \li Remove a compiler. + \endtable + + \section1 Adding a System Architecture (ABI) + + \section2 addAbiFlavor + + \badcode + sdktool addAbiFlavor --flavor --oses (,)* + \endcode + + \section2 addAbiFlavor Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--flavor } + \li Name of the system architecture (ABI). + \li \inlineimage ok.png + \row + \li \c {--oses (,)*} + \li Operating system that the ABI applies to. + \li \inlineimage ok.png + \endtable + + \section2 ABI Flavor Example + + To add Yocto Poky on Linux, enter: + + \badcode + ./sdktool addAbiFlavor \ + --flavor poky \ + --oses linux + \endcode + + \section1 Adding CMake Tools + + \section2 addCMake + + \badcode + sdktool addCMake --id --name --path [ ] + \endcode + + \section2 addCMake Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--id } + \li ID of the CMake installation. Can be any ASCII (7-bit) string. + + If you do not use a version number in the string, the registered + CMake keeps the ID when you update this CMake installation, and + therefore, all kits are automatically updated to use the new + version. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the CMake installation. + \li \inlineimage ok.png + \row + \li \c {--path } + \li Path to the CMake executable. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add CMake tools}. + + \section2 CMake Configuration Example + + To add a CMake tool on Windows, enter: + + \badcode + sdktool addCMake \ + --id "my.custom.cmake" \ + --name "Custom CMake" \ + --path "C:\Program Files\CMake-3.30\bin\cmake.exe" + \endcode + + \section1 Adding Compilers + + \section2 addTC + + \badcode + sdktool addTC --id --language --name --path --abi [OPTIONS] + \endcode + + \section2 addTC Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abi } + \li ABI of the compiler in a format that + \c {ProjectExplorer::Abi::fromString()} can parse. + \li \inlineimage ok.png + \row + \li \c {--id } + \li ID of the toolchain in the format \c {ToolChainType:some_unique_part}, + where the toolchain type can be one of the following, or something + else provided by a plugin: + \list + \li \c {ProjectExplorer.ToolChain.Msvc} for Microsoft MSVC + compilers. This compiler is automatically detected, so + you don't need to add it with the SDK tool. + \li \c {ProjectExplorer.ToolChain.Gcc} for GCC on Linux or + \macos. + \li \c {ProjectExplorer.ToolChain.Clang} for Clang. + \li \c {ProjectExplorer.ToolChain.LinuxIcc} for LinuxICC. + \li \c {ProjectExplorer.ToolChain.Mingw} for MinGW. + \li \c {ProjectExplorer.ToolChain.ClangCl} for Clang/CL. + \li \c {ProjectExplorer.ToolChain.Custom} for a custom + toolchain. + \li \c {Qt4ProjectManager.ToolChain.Android} for Android. + \li \c {Qnx.QccToolChain} for QNX QCC. + \li \c {WebAssembly.ToolChain.Emscripten} for Emscripten. + \endlist + Check the classes derived from \c {ProjectExplorer::ToolChain} + for their IDs. + + \c {some_unique_part} can be anything. \QC uses GUIDs by default. + \li \inlineimage ok.png + \row + \li \c {--language } + \li ID of the input language of the toolchain: \c C or \c Cxx. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the toolchain. + \li \inlineimage ok.png + \row + \li \c {--path } + \li Path to the compiler executable. + \li \inlineimage ok.png + \row + \li \c {--supportedAbis ,} + \li List of ABIs that the compiler supports. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add compilers}. + + \section2 Compiler Example + + To add a GCC compiler on Linux, enter: + + \badcode + ./sdktool addTC \ + --id "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ + --language Cxx + --name "GCC (C++, x86_64)" \ + --path /home/code/build/gcc-6.3/usr/bin/g++ \ + --abi x86-linux-generic-elf-64bit \ + --supportedAbis x86-linux-generic-elf-64bit,x86-linux-generic-elf-32bit \ + ADDITIONAL_INTEGER_PARAMETER int:42 \ + ADDITIONAL_STRING_PARAMETER "QString:some string" \ + \endcode + + \section1 Adding Debuggers + + \section2 addDebugger + + \badcode + sdktool addDebugger --id --name [OPTIONS] + \endcode + + \section2 addDebugger Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abis } + \li Comma-separated list of system architecture definitions. + \li + \row + \li \c {--binary } + \li Path to the debugger executable. Can be an absolute path, the + value \c auto, or an ABI. Finds the appropriate debugger for MSVC + toolchains where \QC does not know the binary path. + \li + \row + \li \c {--engine } + \li Debugger engine type: + \list + \li 1 for GDB + \li 4 for CDB + \li 8 for PDB + \li 256 for LLDB + \li 512 for GDB DAP + \li 1024 for LLDB DAP + \li 4096 for uVision Debugger + \endlist + \li + \row + \li \c {--id } + \li Unique ID of the debugger. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the debugger. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add debuggers}. + + \section2 Debugger Example + + To add a GDB debugger on Linux, enter: + + \badcode + ./sdktool addDebugger \ + --id "company.product.toolchain.gdb" \ + --name "GDB (company, product)" \ + --engine 1 \ + --binary /home/code/build/gdb-7.12/bin/gdb \ + --abis arm-linux-generic-elf-32 \ + \endcode + + \section1 Adding Devices + + \section2 addDev + + \badcode + sdktool addDev --id --name --type [OPTIONS] + \endcode + + \section2 addDev Options + + The following table summarizes the available options. The options to use + depend on the device type. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--authentication } + \li Authentication method: + \list + \li 1 for all authentication methods + \li 2 for SSH authentication using a public and private key + pair + \endlist + \li + \row + \li \c {--b2qHardware } + \li Boot to Qt platform info about hardware. + \li + \row + \li \c {--b2qSoftware } + \li Boot to Qt platform info about software. + \li + \row + \li \c {--debugServerKey } + \li Debug server key. + \li + \row + \li \c {--dockerClangdExecutable } + \li Path to the Clangd executable in the Docker container. + \li + \row + \li \c {--dockerMappedPaths } + \li Semicolon-separated list of Docker mapped paths. + \li + \row + \li \c {--dockerRepo } + \li Docker image repository. + \li + \row + \li \c {--dockerTag } + \li Docker image tag. + \li + \row + \li \c {--freePorts } + \li Free ports. + \li + \row + \li \c {--host } + \li Host name or IP address of the device. + \li + \row + \li \c {--id } + \li Unique ID of the device. + \li \inlineimage ok.png + \row + \li \c {--keyFile } + \li Path to the user's private key file. + \li + \row + \li \c {--name } + \li Name of the device. + \li \inlineimage ok.png + \row + \li \c {--origin } + \li Whether the device was detected automatically: + \list + \li 1 for a manually added device + \li 2 for an automatically detected device + \endlist + \li + \row + \li \c {--osType } + \li Operating system on the device: + \list + \li \c Android.Device.Type + \li \c BareMetalOsType + \li \c QdbLinuxOsType + \li \c DockerDeviceType + \li \c Ios.Device.Type + \li \c Ios.Simulator.Type + \li \c McuSupport.DeviceType + \li \c Desktop + \li \c WebAssemblyDeviceType + \li \c QnxOsType + \li \c GenericLinuxOsType + \endlist + \li + \row + \li \c {--password } + \li Password for password authentication. + \li + \row + \li \c {--sshPort } + \li Port number for SSH connections. + \li + \row + \li \c {--timeout } + \li Timeout for reusing the SSH connection in seconds. + \li + \row + \li \c {--type } + \li Device type: + \list + \li 1 for a hardware device + \li 2 for an emulator, simulator, or virtual device + \endlist + \li \inlineimage ok.png + \row + \li \c {--uname } + \li Username to access the device. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Develop for Devices}{How To: Develop for Devices}. + + \section2 Linux Device Example + + To add a remote Linux device (hardware device) on Linux and use SSH keys to + authenticate to the device, enter: + + \badcode + ./sdktool addDev \ + --id " LinuxDevice1" \ + --name "My Remote Linux Device" \ + --type 1 \ + --authentication 2 \ + --freePorts "10000-10100" \ + --host "10.10.10.15" \ + --keyFile "/usr/.ssh/qtc_id" \ + --origin 1 \ + --osType "GenericLinuxOsType" \ + --sshPort 22 \ + --timeout 10 \ + --uname "root" + \endcode + + \section1 Adding Qt Versions + + \section2 addQt + + \badcode + sdktool addQt --id --name --qmake --type [OPTIONS] + \endcode + + \section2 addQt Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abis } + \li Comma-separated list of system architecture definitions. + \li + \row + \li \c {--id } + \li ID of the Qt installation. \QC automatically sets the ID when it + detects Qt versions installed on the computer. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the Qt installation. + \li \inlineimage ok.png + \row + \li \c {--qmake } + \li Path to the qmake executable in the Qt installation. + \li \inlineimage ok.png + \row + \li \c {--type } + \li The type of the Qt version: + \list + \li \c {Qt4ProjectManager.QtVersion.Android} for Android. + \li \c {Qt4ProjectManager.QtVersion.Desktop} for a desktop Qt. + \li \c {Qt4ProjectManager.QtVersion.Ios} for iOS. + \li \c {Qt4ProjectManager.QtVersion.QNX.QNX} for QNX. + \li \c {RemoteLinux.EmbeddedLinuxQt} for Embedded Linux. + \li \c {Qt4ProjectManager.QtVersion.WebAssembly} for + WebAssembly. + \endlist + The string returned by \c {QtVersion::type()}. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add Qt versions}. + + \section2 Qt Version Example + + To add a self-built Qt 6.8 version on Linux, enter: + + \badcode + ./sdktool addQt \ + --id "company.product.qt" \ + --name "Custom Qt" \ + --qmake /home/code/build/qt-6.8/bin/qmake \ + --type Qt4ProjectManager.QtVersion.Desktop \ + \endcode + + \section1 Adding Kits + + \section2 addKit + + \badcode + sdktool addKit --id --name --devicetype [OPTIONS] + \endcode + + \section2 addKit Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--builddevice } + \li The ID of the device to build applications on. + \li + \row + \li \c {--cmake } + \li The ID of the CMake executable to use for building the project. + \li + \row + \li \c {--cmake-config } + \li Parameters for the CMake configuration of the kit. You can add + multiple entries of this type. + \li + \row + \li \c {--cmake-generator :::} + \li The CMake Generator to use for producing project files. + \li + \row + \li \c {--debugger } + \li Path to the debugger to use for the kit. Do not use this option + with \c {--debuggerid}. + \li + \row + \li \c {--debuggerengine } + \li The type of the debugger set with \c {--debugger}. Do not use + this option with \c {--debuggerid}. + \li + \row + \li \c {--debuggerid } + \li One of the IDs used when adding debuggers with the + \c {addDebugger} operation. Do not use this option + with \c {--debugger} and \c {--debuggerengine}. + \li + \row + \li \c {--device } + \li The device to run applications on. + \li + \row + \li \c {--devicetype } + \li The type of the device to run applications on: + \list + \li \c {Android.Device.Type} for Android devices. + \li \c {Desktop} for code running on the local desktop. + \li \c {Ios.Device.Type} for iOS devices. + \li \c {Ios.Simulator.Type} for iOS simulators. + \li \c {GenericLinuxOsType} for embedded Linux devices. + \li \c {WebAssemblyDeviceType} for web browsers. + \endlist + The string returned by \c {IDevice::type()}. + \li \inlineimage ok.png + \row + \li \c {--env } + \li Environment variable values for the build environment. You can + add multiple entries of this type. + \li + \row + \li \c {--icon } + \li Path to the image to use as an icon for the kit. + \li + \row + \li \c {--id } + \li ID of the kit. \QC automatically sets the ID when it + detects Qt versions installed on the computer. + \li \inlineimage ok.png + \row + \li \c {--toolchain } + \li One of the IDs used when adding compilers with the \c {addTC} + operation. is: \c C, \c Cxx, \c Nim, or something set + by a plugin. + \li + \row + \li \c {--mkspec } + \li The \c mkspec configuration that qmake uses. Omit this option + to use the default \c mkspec of the set Qt version. + \li + \row + \li \c {--name } + \li Name of the kit. You can use variables to generate the kit name + based on the kit elements you set with the other operations, such + as the Qt version. + \li \inlineimage ok.png + \row + \li \c {--qt } + \li One of the IDs used when adding Qt versions with the \c {addQt} + operation. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add kits}. + + \section2 Kit Example + + To add a kit that uses the GCC compiler and the self-built Qt to build + applications on Linux, enter: + + \badcode + ./sdktool addKit \ + --id "company.product.kit" \ + --name "Qt %{Qt:Version} (company, product)" \ + --debuggerid "company.product.toolchain.gdb" \ + --devicetype GenericLinuxOsType \ + --sysroot /tmp/sysroot \ + --Ctoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.gcc" \ + --Cxxtoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ + --qt "company.product.qt" \ + --mkspec "devices/linux-mipsel-broadcom-97425-g++" \ + \endcode + + \section1 Adding, Getting, and Finding Keys + + Enter the path to a file relative to the top-level settings directory and + without .xml extension, followed by one or more \c { :} + key-value pairs. + + \section1 Removing Configured Items + + To remove a CMake tool, compiler, debugger, device, Qt version, or kit, + enter: + + \badcode + rm --id + \endcode + + Where \c is the ID of the item. + + \sa {Manage Kits}{How To: Manage Kits}, {Installation}, {Kits} +*/ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc index c0c8386911f..810b8f79b0f 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc @@ -79,6 +79,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-create + \ingroup creator-how-to-projects-configure \title Create VCS repositories for new projects diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc index 4596d46da2e..5f68781285a 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc @@ -7,9 +7,10 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Qt Widget Based Application + \keyword {Creating a Qt Widget Based Application} + \title Tutorial: Qt Widgets application - \brief How to use the integrated \QD to create a Qt widget based application + \brief How to use the integrated \QD to create a Qt widget-based application for the desktop. This tutorial describes how to use \QC to create a small Qt application, @@ -19,54 +20,54 @@ \image qtcreator-textfinder-screenshot.png - \section1 Creating the Text Finder Project + \section1 Create the Text Finder project \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Application (Qt)} > \uicontrol {Qt Widgets Application} - > \uicontrol Choose. + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Application (Qt)} > \uicontrol {Qt Widgets Application}. - \image qtcreator-new-qt-gui-application.png {New Project dialog} + \image qtcreator-new-project-qt-widgets.webp {New Project dialog} - The \uicontrol{Project Location} dialog opens. + \li Select \uicontrol Choose to open the \uicontrol {Project Location} + dialog. - \image qtcreator-intro-and-location-qt-gui.png {Project Location dialog} + \image qtcreator-new-project-location-qt-widgets.webp {Project Location dialog} - \li In the \uicontrol{Name} field, type \b {TextFinder}. + \li In \uicontrol{Name}, type \b {TextFinder}. - \li In the \uicontrol {Create in} field, enter the path for the project files. + \li In \uicontrol {Create in}, enter the path for the project files. For example, \c {C:\Qt\examples}. \li Select \uicontrol{Next} (on Windows and Linux) or \uicontrol Continue (on \macos) to open the \uicontrol {Define Build System} dialog. - \image qtcreator-new-project-build-system-qt-gui.png {Define Build System dialog} + \image qtcreator-new-project-build-system.webp {Define Build System dialog} - \li In the \uicontrol {Build system} field, select \l {CMake} + \li In \uicontrol {Build system}, select \l {CMake} {CMake} as the build system to use for building the project. \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol{Class Information} dialog. - \image qtcreator-class-info-qt-gui.png {Class Information dialog} + \image qtcreator-new-project-class-info.webp {Class Information dialog} - \li In the \uicontrol{Class name} field, type \b {TextFinder} as the class + \li In \uicontrol{Class name}, type \b {TextFinder} as the class name. - \li In the \uicontrol{Base class} list, select \b {QWidget} as the base + \li In \uicontrol{Base class}, select \b {QWidget} as the base class type. - \note The \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file} - fields are automatically updated to match the name of the class. + \note \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file} + s are automatically updated to match the name of the class. \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Translation File} dialog. - \image qtcreator-new-qt-gui-application-translationfile.png {Translation File dialog} + \image qtcreator-new-project-translation-file.webp {Translation File dialog} - \li In the \uicontrol Language field, you can select a language that you + \li In \uicontrol Language, you can select a language that you plan to \l {Use Qt Linguist}{translate} the application to. This sets up localization support for the application. You can add other languages later by editing the project file. @@ -74,7 +75,7 @@ \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Kit Selection} dialog. - \image qtcreator-new-project-qt-versions-qt-gui.png {Kit Selection dialog} + \image qtcreator-new-project-kit-selection.webp {Kit Selection dialog} \li Select build and run \l{Kits}{kits} for your project. @@ -82,7 +83,7 @@ \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Project Management} dialog. - \image qtcreator-new-project-summary-qt-gui.png {Project Management dialog} + \image qtcreator-new-project-summary.webp {Project Management dialog} \li Review the project settings, and select \uicontrol{Finish} (on Windows and Linux) or \uicontrol Done (on \macos) to create the project. @@ -111,18 +112,18 @@ If you selected CMake as the build system, \QC created a CMakeLists.txt project file for you. - \section1 Filling in the Missing Pieces + \section1 Fill in the missing pieces Begin by designing the user interface and then move on to filling in the missing code. Finally, add the find functionality. - \section2 Designing the User Interface + \section2 Design the user interface \image qtcreator-textfinder-ui.png {Text Finder UI} \list 1 - \li In the \uicontrol{Editor} mode, double-click the textfinder.ui file in the + \li In the \uicontrol {Edit} mode, double-click the textfinder.ui file in the \uicontrol{Projects} view to launch the integrated \QD. \li Drag the following widgets to the form: @@ -138,10 +139,10 @@ \image qtcreator-textfinder-ui-widgets.png {Adding widgets to Text Finder UI} \note To easily locate the widgets, use the search box at the top of the - \uicontrol Sidebar. For example, to find the \uicontrol Label widget, start typing - the word \b label. + \uicontrol {Widget Box}. For example, to find the \uicontrol Label widget, + start typing the word \b label. - \image qtcreator-textfinder-filter.png {Filter field} + \image qtcreator-textfinder-filter.png {Filter} \li Double-click the \uicontrol{Label} widget and enter the text \b{Keyword}. @@ -199,7 +200,7 @@ For more information about designing forms with \QD, see the \l{\QD Manual}. - \section2 Completing the Header File + \section2 Complete the header file The textfinder.h file already has the necessary #includes, a constructor, a destructor, and the \c{Ui} object. You need to add a private function, @@ -218,7 +219,7 @@ \endlist - \section2 Completing the Source File + \section2 Complete the source file Now that the header file is complete, move on to the source file, textfinder.cpp. @@ -258,7 +259,7 @@ QMetaObject::connectSlotsByName(TextFinder); \endcode - \section2 Creating a Resource File + \section2 Create a resource file You need a resource file (.qrc) within which you embed the input text file. The input file can be any .txt file with a paragraph of text. @@ -269,32 +270,32 @@ \list 1 - \li Select \uicontrol File > \uicontrol {New File} > + \li Go to \uicontrol File > \uicontrol {New File} > \uicontrol Qt > \uicontrol {Qt Resource File} > \uicontrol Choose. - \image qtcreator-add-resource-wizard.png {New File dialog} + \image qtcreator-new-file-qrc.webp {New File dialog} The \uicontrol {Choose the Location} dialog opens. - \image qtcreator-add-resource-wizard2.png {Choose the Location dialog} + \image qtcreator-new-file-qrc1.webp {Choose the Location dialog} - \li In the \uicontrol{Name} field, enter \b{textfinder}. + \li In \uicontrol{Name}, enter \b{textfinder}. - \li In the \uicontrol{Path} field, enter the path to the project, + \li In \uicontrol{Path}, enter the path to the project, and select \uicontrol Next or \uicontrol Continue. The \uicontrol{Project Management} dialog opens. - \image qtcreator-add-resource-wizard3.png {Project Management dialog} + \image qtcreator-new-file-qrc2.webp {Project Management dialog} - \li In the \uicontrol{Add to project} field, select \b{TextFinder} + \li In \uicontrol{Add to project}, select \b{TextFinder} and select \uicontrol{Finish} or \uicontrol Done to open the file in the code editor. \li Select \uicontrol Add > \uicontrol {Add Prefix}. - \li In the \uicontrol{Prefix} field, replace the default prefix with a slash + \li In \uicontrol{Prefix}, replace the default prefix with a slash (/). \li Select \uicontrol Add > \uicontrol {Add Files}, to locate and add @@ -304,7 +305,7 @@ \endlist - \section1 Adding Resources to Project File + \section1 Add resources to the project file For the text file to appear when you run the application, you must specify the resource file as a source file in the \e CMakeLists.txt file that the @@ -314,10 +315,9 @@ \skipto set(PROJECT_SOURCES \printuntil ) - \section1 Compiling and Running Your Application + \section1 Build and run your application - Now that you have all the necessary files, select the - \inlineimage icons/run_small.png - button to compile and run your application. + Now that you have all the necessary files, select + \inlineimage icons/run_small.png to build and run your application. */ diff --git a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc index 29d2c7d34b1..724fbba6125 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc @@ -119,5 +119,5 @@ To import device profiles from .qdp files, select \uicontrol Open. To save them as .qdp files, select \uicontrol Save. - \sa {Creating a Qt Widget Based Application}, {Adding \QD Plugins} + \sa {Tutorial: Qt Widgets application}, {Adding \QD Plugins} */ diff --git a/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc b/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc index 3ce3dc02f7c..2ba9886f8bf 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc @@ -69,5 +69,5 @@ \MinGW or installing a Qt version that was built with Microsoft Visual Studio, depending on which configuration you want to use for your applications. - \sa {Creating a Qt Widget Based Application}, {\QD} + \sa {Tutorial: Qt Widgets application}, {\QD} */ diff --git a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc index e76ad238e23..43a61dc1505 100644 --- a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc +++ b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc @@ -474,7 +474,7 @@ \li Mode \li Modes correspond to complete screens of controls, specialized for a task. - \image qtcreator-mode-selector.png {Mode selector} + \image qtcreator-mode-selector.webp {Mode selector} \li You can add a mode for a new type of editor, for example. Use descriptive, but short mode names. They have to fit in the \uicontrol {Mode selector}. diff --git a/doc/qtdesignstudio/images/qds-help-in-code-view.webp b/doc/qtdesignstudio/images/qds-help-in-code-view.webp new file mode 100644 index 00000000000..b30181d795b Binary files /dev/null and b/doc/qtdesignstudio/images/qds-help-in-code-view.webp differ diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index 04016cbb25e..9e50abc5e27 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,16 +4,16 @@ import qbs.FileInfo import qbs.Utilities Module { - property string qtcreator_display_version: '14.0.0-rc1' - property string ide_version_major: '13' + property string qtcreator_display_version: '14.0.0' + property string ide_version_major: '14' property string ide_version_minor: '0' - property string ide_version_release: '84' + property string ide_version_release: '0' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release - property string ide_compat_version_major: '13' + property string ide_compat_version_major: '14' property string ide_compat_version_minor: '0' - property string ide_compat_version_release: '84' + property string ide_compat_version_release: '0' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 29fa29e0eb0..e447c639cf5 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -632,6 +632,9 @@ class DumperBase(): self.register_struct('@QList<@QStandardItemData>', p5=1, p6=3) self.register_struct('@QList<@QRect>', p5=1, p6=3) + typeid_string_list = self.register_struct('@QList<@QString>', p5=1, p6=3) + self.register_typedef('@QStringList', typeid_string_list) + typeid_var_list = self.register_struct('@QList<@QVariant>', p5=1, p6=3) self.register_typedef('@QVariantList', typeid_var_list) diff --git a/share/qtcreator/qml-type-descriptions/qbs-bundle.json b/share/qtcreator/qml-type-descriptions/qbs-bundle.json index 9b2f233a4c3..672c79187f2 100644 --- a/share/qtcreator/qml-type-descriptions/qbs-bundle.json +++ b/share/qtcreator/qml-type-descriptions/qbs-bundle.json @@ -24,6 +24,7 @@ "qbs.Probes", "qbs.Process", "qbs.PropertyList", + "qbs.ProviderUtils", "qbs.TemporaryDir", "qbs.TextFile", "qbs.UnixUtils", diff --git a/share/qtcreator/qml-type-descriptions/qbs.qmltypes b/share/qtcreator/qml-type-descriptions/qbs.qmltypes index 941697b02d2..00c0cbb9261 100644 --- a/share/qtcreator/qml-type-descriptions/qbs.qmltypes +++ b/share/qtcreator/qml-type-descriptions/qbs.qmltypes @@ -19,7 +19,6 @@ Module { exports: [ "qbs/Depends 1.0" ] prototype: "QQuickItem" Property { name: "condition"; type: "bool" } - Property { name: "enableFallback"; type: "bool" } Property { name: "limitToSubProject"; type: "bool" } Property { name: "multiplexConfigurationIds"; type: "string"; isList: true } Property { name: "name"; type: "string" } @@ -93,6 +92,8 @@ Module { name: "ModuleProvider" exports: [ "qbs/ModuleProvider 1.0" ] prototype: "QQuickItem" + Property { name: "isEager"; type: "bool" } + Property { name: "moduleName"; type: "string" } Property { name: "name"; type: "string" } Property { name: "outputBaseDir"; type: "string" } Property { name: "relativeSearchPaths"; type: "string"; isList: true } diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt index 283ebad166a..d933a878514 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) # Remove when sharing with others. -@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')} +@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources/lib/cmake/QtCreator')} list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Qt Creator.app/Contents/Resources") @else - @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Contents/Resources')} + @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Contents/Resources/lib/cmake/QtCreator')} list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Contents/Resources") @else list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}") diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index e21c369fd18..4586ab183e2 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -7811,7 +7811,7 @@ Please check the output pane for more information. Also warns in the code editor about QML features that are not properly supported by the Qt Quick Designer. - Zeigt auch im Code-Editor eine Warnung bei QML-Features an, die vom Qt Quick Designer nicht vollständig unterstützt werden. + Zeigt auch im Code-Editor eine Warnung bei QML-Funktionen an, die vom Qt Quick Designer nicht vollständig unterstützt werden. Internationalization @@ -10765,7 +10765,7 @@ Locked components cannot be modified or selected. Verifying package integrity... - + Prüfe die Integrität des Pakets... Unarchiving error. @@ -10927,7 +10927,7 @@ Dies kann nicht rückgängig gemacht werden. The device has to be connected with ADB debugging enabled to use this feature. - Das Gerät muss mit aktiviertem ADB-Debuggen angeschlossen sein, um diese Funktionalität nutzen zu können. + Das Gerät muss mit aktiviertem ADB-Debuggen angeschlossen sein, um diese Funktion nutzen zu können. Opening connection port %1 failed. @@ -10963,7 +10963,7 @@ Dies kann nicht rückgängig gemacht werden. Android support is not yet configured. - + Android-Unterstützung ist noch nicht konfiguriert. The device info returned from AvdDialog is invalid. @@ -11088,7 +11088,7 @@ Dies kann nicht rückgängig gemacht werden. Include default features for Qt modules. - Standard-Features für Qt-Module einschließen. + Standardfunktionen für Qt-Module einschließen. Add @@ -11169,11 +11169,11 @@ Dies kann nicht rückgängig gemacht werden. Cannot find the package name from AndroidManifest.xml nor build.gradle files at "%1". - + Konnte den Paketnamen nicht aus den Informationen in der AndroidManifest.xml-Datei oder der build.gradle-Datei in "%1" bestimmen. Deployment failed with the following errors: - + Das Deployment ist mit den folgenden Fehlern fehlgeschlagen: Install an APK File @@ -11397,7 +11397,7 @@ Der vom Kit mindestens benötigte API-Level ist %1. Cannot open "%1". - + "%1" kann nicht geöffnet werden. Cannot parse "%1". @@ -11599,39 +11599,39 @@ Installieren Sie diese manuell, nachdem der aktuelle Vorgang abgeschlossen ist. Finished successfully. - + Erfolgreich abgeschlossen. Installing / Uninstalling selected packages... - + Installiere / Deinstalliere ausgewählte Pakete... Closing the preferences dialog will cancel the running and scheduled SDK operations. - + Wenn Sie den Einstellungsdialog schließen, werden die laufenden und geplanten SDK-Operationen abgebrochen. Closing the options dialog will cancel the running and scheduled SDK operations. - + Wenn Sie den Einstellungsdialog schließen, werden die laufenden und geplanten SDK-Operationen abgebrochen. Uninstalling %1... - + Deinstalliere %1... Installing %1... - + Installiere %1... Updating installed packages... - + Aktualisiere installierte Pakete... [Packages to be uninstalled:] - + [Pakete, die deinstalliert werden sollen:] [Packages to be installed:] - + [Pakete, die installiert werden sollen:] Android SDK Changes @@ -11720,7 +11720,7 @@ Installieren Sie diese manuell, nachdem der aktuelle Vorgang abgeschlossen ist. Failed to start AVD emulator for "%1" device. - + Das Starten des AVD-Emulators für das Gerät "%1" ist fehlgeschlagen. Clean Environment @@ -12340,11 +12340,11 @@ und das Überschreiben Ihrer Einstellungen erfordert. Das Überschreiben erlaube Use a timeout while executing test cases. - + Zeitlimit für das Ausführen von Testfällen verwenden. Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. Overrides test framework or build system defaults. - + Zeitlimit, das für das Ausführen von Testfällen benutzt wird. Dieses wird für jeden Testfall einzeln angewendet, nicht für das gesamte Projekt. Überschreibt die Vorgaben des Test-Frameworks und des Build-Systems. Omit run configuration warnings @@ -12494,23 +12494,23 @@ Warnung: Dies ist eine experimentelle Funktion und könnte dazu führen, dass di Apply path filters before scanning for tests. - + Pfade vor dem Suchen nach Tests filtern. Wildcard expressions for filtering: - + Ausdrücke mit Platzhaltern, die zum Filtern benutzt werden: Add - Hinzufügen + Hinzufügen Remove - + Entfernen Limit Files to Path Patterns - + Dateien auf Suchmuster beschränken Scanning for Tests @@ -13028,7 +13028,7 @@ Dies könnte Probleme während der Ausführung verursachen. Repeat Tests - + Tests wiederholen Output on failure @@ -13728,7 +13728,7 @@ Siehe auch die Einstellungen für Google Test. No Data - + Keine Daten Axivion @@ -13744,15 +13744,15 @@ Siehe auch die Einstellungen für Google Test. Open Issue in Dashboard - + Problem im Dashboard anzeigen Open Table in Dashboard - + Tabelle im Dashboard anzeigen Copy Dashboard Link to Clipboard - + Dashboard-Link in die Zwischenablage kopieren Show rule details @@ -13792,7 +13792,7 @@ Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe. Unauthenticated access failed (wrong user), using authenticated access... - + Zugriff ohne Authentifizierung ist fehlgeschlagen (falscher Benutzer), verwende authentifizierten Zugriff... Enter the password for: @@ -13830,7 +13830,7 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Search for issues inside the Axivion dashboard or request issue details for Axivion inline annotations to see them here. - + Suchen Sie nach Problemen im Axivion-Dashboard oder fordern Sie Problemdetails für Inline-Annotationen von Axivion an, um sie hier anzuzeigen. Fetch Projects @@ -13882,7 +13882,7 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Add... - Hinzufügen... + Hinzufügen... Edit... @@ -13890,27 +13890,27 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Remove - + Entfernen Default dashboard server: - + Vorgabe-Dashboardserver: unset - + nicht gesetzt Remove Server Configuration - + Server-Konfiguration löschen Remove the server configuration "%1"? - + Server-Konfiguration "%1" löschen? Add Dashboard Configuration - + Dashboard-Konfiguration hinzufügen Edit Dashboard Configuration @@ -16965,7 +16965,7 @@ Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der With clangd enabled, Qt Creator fully supports modern C++ when highlighting code, completing symbols and so on.<br>This comes at a higher cost in terms of CPU load and memory usage compared to the built-in code model, which therefore might be the better choice on older machines and/or with legacy code.<br>You can enable/disable and fine-tune clangd <a href="dummy">here</a>. - Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum eingebauten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. + Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum integrierten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. Enable Anyway @@ -25744,7 +25744,7 @@ markers in the source code editor. <html><head/><body><p>Enables stepping backwards.</p><p><b>Note:</b> This feature is very slow and unstable on the GDB side. It exhibits unpredictable behavior when going backwards over system calls and is very likely to destroy your debugging session.</p></body></html> - <html><head/><body><p>Rückwärts-Debuggen aktivieren.</p><p><b>Hinweis:</b> Diese Funktionalität ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht zerstört werden.</p></body></html> + <html><head/><body><p>Rückwärts-Debuggen aktivieren.</p><p><b>Hinweis:</b> Diese Funktion ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht zerstört werden.</p></body></html> Debug all child processes @@ -28125,7 +28125,7 @@ Bitte wählen Sie einen 64-bit-Debugger in den Kit-Einstellungen für dieses Kit This feature is very slow and unstable on the GDB side. It exhibits unpredictable behavior when going backwards over system calls and is very likely to destroy your debugging session. - Diese Funktionalität ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht unbenutzbar werden. + Diese Funktion ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht unbenutzbar werden. Reverse Direction @@ -30618,7 +30618,7 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Does not interpret key sequences like Ctrl-S in FakeVim but handles them as regular shortcuts. This gives easier access to core functionality at the price of losing some features of FakeVim. - Tastensequenzen wie Strg-S nicht in FakeVim verarbeiten, sondern sie als gewöhnliche Tastenkombinationen behandeln. Dies erleichtert den Zugriff auf die Kernfunktionalität auf Kosten eingeschränkter Funktionalität von FakeVim. + Tastensequenzen wie Strg-S nicht in FakeVim verarbeiten, sondern sie als gewöhnliche Tastenkombinationen behandeln. Dies erleichtert den Zugriff auf die Kernfunktionalität auf Kosten eingeschränkter Funktion von FakeVim. Does not interpret some key presses in insert mode so that code can be properly completed and expanded. @@ -41022,7 +41022,7 @@ Aktivieren Sie dies, wenn Sie 32bit-x86-Binärdateien erstellen wollen, ohne ein %1 (%2, %3 %4 at %5) - %1 (%2, %3 %4 an %5) + %1 (%2, %3 %4: %5) Remove @@ -43192,7 +43192,7 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen. At least one required feature is not present. - Mindestens ein benötigtes Feature ist nicht vorhanden. + Mindestens eine benötigte Funktion ist nicht vorhanden. Platform is not supported. @@ -43200,7 +43200,7 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen. At least one preferred feature is not present. - Mindestens ein bevorzugtes Feature ist nicht vorhanden. + Mindestens eine bevorzugte Funktion ist nicht vorhanden. Feature list is set and not of type list. @@ -47061,7 +47061,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code JavaScript can break the visual tooling in Qt Design Studio. - + JavaScript kann das visuelle Tooling in Qt Design Studio stören. Duplicate import (%1). @@ -47446,23 +47446,23 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de Turn on - + Einschalten Allow versions below Qt %1 - + Versionen niedriger als Qt %1 erlauben Use advanced features (renaming, find usages, and so on) (experimental) - + Erweiterte Funktionen verwenden (umbenennen, Verweise finden und weiteres) (experimentell) Use from latest Qt version - + Neueste Qt-Version verwenden Create .qmlls.ini files for new projects - + .qmlls.ini-Dateien für neue Projekte erstellen QML Language Server @@ -48561,7 +48561,7 @@ Speichern fehlgeschlagen. Override device QML viewer: - + Statt QML-Viewer auf Gerät verwenden: System Environment @@ -48574,31 +48574,31 @@ Speichern fehlgeschlagen. QML Utility QMLRunConfiguration display name. - + QML-Werkzeug No QML utility found. - + Kein QML-Werkzeug gefunden. No QML utility specified for target device. - + Für das Zielgerät wurde kein QML-Werkzeug angegeben. Qt Version: - + Qt-Version: Qt 6 - Qt 6 + Qt 6 Qt 5 - Qt 5 + Qt 5 QML Runtime - + QML-Runtime No script file to execute. @@ -48614,7 +48614,7 @@ Speichern fehlgeschlagen. Update QmlProject File - + QmlProject-Datei aktualisieren Warning while loading project file %1. @@ -48622,164 +48622,169 @@ Speichern fehlgeschlagen. No Qt Design Studio installation found - + Es wurde keine Installation von Qt Design Studio gefunden Would you like to install it now? - + Möchten Sie es jetzt installieren? Install - Installieren + Installieren Unknown - Unbekannt + Unbekannt QML PROJECT FILE INFO - + QML PROJECT FILE INFO Qt Version - - + Qt-Version - Qt Design Studio Version - - + Qt Design Studio-Version - No QML project file found - Would you like to create one? - + Keine QML-Projektdatei gefunden - möchten Sie eine erstellen? Generate - + Erstellen Qt Design Studio - Qt Design Studio + Qt Design Studio Open with Qt Design Studio - + Mit Qt Design Studio öffnen Open - Öffnen + Öffnen Open with Qt Creator - Text Mode - + Mit Qt Creator im Textmodus öffnen Remember my choice - + Meine Auswahl speichern Export Project - + Projekt exportieren Enable Automatic CMake Generation - + Automatische CMake-Erstellung aktivieren Use MultiLanguage in 2D view - + MultiLanguage in der 2D-Ansicht verwenden Reads translations from MultiLanguage plugin. - + Liest Übersetzungen aus dem MultiLanguage-Plugin. Failed to start Qt Design Studio. - + Qt Design Studio konnte nicht gestartet werden. No project file (*.qmlproject) found for Qt Design Studio. Qt Design Studio requires a .qmlproject based project to open the .ui.qml file. - + Es wurde keine Projektdatei (*.qmlproject) für Qt Design Studio gefunden. +Qt Design Studio benötigt zum Öffnen der .ui.qml-Datei ein .qmlproject-basiertes Projekt. Set as Main .qml File - + Als .qml-Hauptdatei setzen Set as Main .ui.qml File - + Als .ui.qml-Hauptdatei setzen Project File Generated - + Projektdatei erstellt File created: %1 - + Datei erstellt: + +%1 Select File Location - + Dateipfad auswählen Qt Design Studio Project Files (*.qmlproject) - + Qt Design Studio Projektdateien (*.qmlproject) Invalid Directory - + Ungültiges Verzeichnis Project file must be placed in a parent directory of the QML files. - + Die Projektdatei muss in einem den QML-Dateien übergeordneten Verzeichnis erstellt werden. Problem - + Problem Selected directory is far away from the QML file. This can cause unexpected results. Are you sure? - + Das ausgewählte Verzeichnis liegt weit entfernt von der QML-Datei. Dies kann zu unerwarteten Ergebnissen führen. + +Sind Sie sicher? Cannot find a valid build system. - + Es kann kein gültiges Build-System gefunden werden. Cannot create a valid build directory. - + Es kann kein gültiges Build-Verzeichnis erstellt werden. Command: - + Kommando: Arguments: - Argumente: + Argumente: Build directory: - Build-Verzeichnis: + Build-Verzeichnis: The Selected Kit Is Not Supported - + Das gewählte Kit wird nicht unterstützt You cannot use the selected kit to preview Qt for MCUs applications. - + Das gewählte Kit kann nicht zur Vorschau von Qt for MCUs-Anwendungen verwendet werden. Cannot find a valid Qt for MCUs kit. - + Es kann kein gültiges Kit für Qt for MCUs gefunden werden. Qt for MCUs Deploy Step - + Qt for MCUs Deployment-Schritt @@ -50080,13 +50085,15 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Use SSH port forwarding for debugging - + SSH-Portweiterleitung zum Debuggen verwenden Enable debugging on remote targes which cannot expose gdbserver ports. The ssh tunneling is used to map the remote gdbserver port to localhost. The local and remote ports are determined automatically. - + Mache Debuggen auf entfernten Zielen möglich, die gdbserver-Ports nicht direkt bereitstellen können. +Es wird SSH-Tunneling verwendet, um die entfernten gdbserver-Ports auf localhost abzubilden. +Die lokalen und entfernten Ports werden automatisch bestimmt. &Username: @@ -50189,7 +50196,7 @@ Der Steuerprozess konnte nicht gestartet werden. Device "%1" is disconnected. - + Gerät "%1" ist nicht verbunden. Remote Linux @@ -50214,17 +50221,19 @@ Der Steuerprozess konnte nicht gestartet werden. Created directory: "%1". - + Verzeichnis wurde erstellt: "%1". + Copied %1/%2: "%3" -> "%4". %1/%2 = progress in the form 4/15, %3 and %4 = source and target file paths - + %1/%2 kopiert: "%3 -> "%4". + Failed to deploy files. - + Deployment der Dateien ist fehlgeschlagen. Device is considered unconnected. Re-run device test to reset state. @@ -50366,15 +50375,15 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e %1 failed to start: %2 - + %1 konnte nicht gestartet werden: %2 %1 crashed. - %1 ist abgestürzt. + %1 ist abgestürzt. %1 failed with exit code %2. - + %1 ist mit Rückgabewert %2 fehlgeschlagen. Deploy files @@ -50752,7 +50761,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Cropping - + Zuschneiden Crop and Trim... @@ -53586,7 +53595,7 @@ Werte kleiner als 100% können überlappende und falsch ausgerichtete Darstellun %1 [built-in] - %1 [eingebaut] + %1 [integriert] %1 [customizable] @@ -53795,7 +53804,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Enable built-in camel case &navigation - Eingebaute CamelCase-&Navigation aktivieren + Integrierte CamelCase-&Navigation aktivieren On Mouseover @@ -54517,15 +54526,15 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Open Type Hierarchy - Klassenhierarchie öffnen + Klassenhierarchie öffnen Meta+Shift+T - Meta+Shift+T + Meta+Shift+T Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T Move the View a Page Up and Keep the Cursor Position @@ -54713,23 +54722,23 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Sort Lines - + Zeilen sortieren Go to Previous Word (Camel Case) - + Zum vorhergehenden Wort springen (Camel Case) Go to Next Word (Camel Case) - + Zum nächsten Wort springen (Camel Case) Go to Previous Word (Camel Case) with Selection - + Vorhergehendes Wort markieren (Camel Case) Go to Next Word (Camel Case) with Selection - + Nächstes Wort markieren (Camel Case) Meta+Shift+S @@ -55001,7 +55010,7 @@ Drücken Sie zusätzlich die Umschalttaste, wird ein Escape-Zeichen an der aktue Documentation Comments - Kommentare für Dokumentation + Dokumentationskommentare Automatically creates a Doxygen comment upon pressing enter after a '/**', '/*!', '//!' or '///'. @@ -55969,15 +55978,15 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Type Hierarchy - Klassenhierarchie + Typenhierarchie No type hierarchy available - Keine Klassenhierarchie verfügbar + Keine Typenhierarchie verfügbar Reloads the type hierarchy for the symbol under the cursor. - + Lädt die Typenhierarchie für das Symbol unter der Einfügemarke neu. @@ -56735,7 +56744,7 @@ Die Trace-Daten sind verloren. watch is not implemented. - + "watch" ist nicht implementiert. Refusing to remove the standard directory "%1". @@ -57206,11 +57215,11 @@ Die Trace-Daten sind verloren. Failed to open output file. - + Die Ausgabedatei konnte nicht geöffnet werden. Failed to write output file. - + Die Ausgabedatei konnte nicht geschrieben werden. Command failed. @@ -57241,7 +57250,7 @@ in "%2" aus. Default - Vorgabe + Vorgabe Show %1 Column @@ -57318,7 +57327,14 @@ To prepend to 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. Lines starting with "##" will be treated as comments. - + Geben Sie eine Umgebungsvariable pro Zeile ein. +Um eine Variable zu setzen oder zu ändern, verwenden Sie VARIABLE=WERT. +Um eine Variable zu deaktivieren, stellen Sie der Zeile "#" voran. +Um einen Wert an eine Variable anzufügen, verwenden Sie VARIABLE+=WERT. +Um einen Wert einer Variable voranzustellen, verwenden Sie VARIABLE=+WERT. +Existierende Variablen können in einem WERT mit ${ANDERE} verwendet werden. +Um eine Variable zu leeren, schreiben Sie nichts als ihren Namen in eine Zeile. +Zeilen, die mit "##" beginnen, werden als Kommentare behandelt. &OK @@ -57436,7 +57452,7 @@ Lines starting with "##" will be treated as comments. No Lua interface set - + Keine Lua-Schnittstelle eingestellt diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts index ff5318759a9..5f03828b04d 100644 --- a/share/qtcreator/translations/qtcreator_fr.ts +++ b/share/qtcreator/translations/qtcreator_fr.ts @@ -798,6 +798,10 @@ Utilisez AmbientSound.Infinite pour boucler indéfiniment. New Effect Nouvel effet + + Add to Content Library + Ajouter à la bibliothèque de contenus + AudioEngineSection @@ -1388,6 +1392,37 @@ Le chemin doit être relatif. L’URL de la ressource pour l’icône. + + CameraSpeedConfigAction + + Open camera speed configuration dialog + Ouvrir la fenêtre de configuration de la vitesse de la caméra + + + + CameraSpeedConfigurationDialog + + Camera Speed Configuration + Configuration de la vitesse de la caméra + + + The speed camera moves when controlled by keyboard. + La vitesse de déplacement de la caméra lorsque contrôlée par le clavier. + + + Multiplier + Multiplicateur + + + The value multiplier for the speed slider. + ou facteur ? + Le multiplicateur de valeur pour le slider de vitesse. + + + Reset + Réinitialiser + + CameraToggleAction @@ -1582,170 +1617,6 @@ Le chemin doit être relatif. Appliquer - - CollectionDetailsToolbar - - Add property left - Ajouter une propriété à gauche - - - Add property right - Ajouter une propriété à droite - - - Delete selected property - Supprimer la propriété sélectionnée - - - Insert row below - Insérer une ligne en dessous - - - Insert row above - Insérer une ligne au-dessus - - - Delete selected row - Supprimer la ligne sélectionnée - - - Save changes - Enregistrer les changements - - - Export model - Exporter le modèle - - - Add Column - Ajouter une colonne - - - Column name: - Nom de la colonne : - - - The model already contains "%1"! - « %1 » est déjà contenu dans le modèle ! - - - Type: - Type : - - - Add - Ajouter - - - Cancel - Annuler - - - - CollectionDetailsView - - Edit - Modifier - - - Delete - Supprimer - - - Sort Ascending - Tri croissant - - - Sort Descending - Tri décroissant - - - Add row above - Ajouter une ligne au-dessus - - - Add row below - Ajouter une ligne en dessous - - - Delete this row - Supprimer cette ligne - - - Select a model to continue - Sélectionner un modèle pour continuer - - - Delete Column - Supprimer la colonne - - - Are you sure that you want to delete column "%1"? - Voulez-vous vraiment supprimer la colonne « %1 » ? - - - Cancel - Annuler - - - - CollectionItem - - Delete - Supprimer - - - Rename - Renommer - - - Assign to the selected node - Assigner au nœud sélectionné - - - Deleting the model - Suppression du modèle - - - Are you sure that you want to delete model "%1"? -The model will be deleted permanently. - Êtes-vous sûr de vouloir supprimer le modèle « %1 » ? -Le modèle sera définitivement supprimé. - - - Are you sure that you want to delete model "%1"? -The model will be removed from the project but the file will not be deleted. - Voulez-vous vraiment supprimer le modèle « %1 » ? -Le modèle sera retiré du projet mais le fichier ne sera pas supprimé. - - - Rename model - Renommer le modèle - - - Cancel - Annuler - - - New name: - Nouveau nom : - - - - CollectionView - - Data Models - Modèles de données - - - Import a model - Importer un modèle - - - Add a new model - Ajouter un nouveau modèle - - ColorAnimationSpecifics @@ -1885,10 +1756,26 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Column spacing Espacement des colonnes + + Sets the space between the items in pixels in the <b>Column Layout</b>. + Définit l'espacement en pixels entre les éléments de l'<b>agencement en colonne</b>. + Layout direction Direction du layout + + Sets the direction of the item flow in the <b>Column Layout</b>. + Définit la direction du flux des éléments de l'<b>agencement en colonne</b>. + + + Uniform cell size + Taille de cellules uniforme + + + Toggles all cells to have a uniform size. + Active/désactive une taille commune pour toutes les cellules. + ColumnSpecifics @@ -2041,6 +1928,29 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Définit l'état du composant. + + ConfirmClearAllDialog + + Confirm clear list + Confirmation du nettoyage de la liste + + + You are about to clear the list of effect nodes. + +This can not be undone. + Vous allez nettoyer la liste de nœuds d'effet. + +Cela ne peut être annulé. + + + Clear + Nettoyer + + + Cancel + Annuler + + ConfirmDeleteFilesDialog @@ -2253,12 +2163,9 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Effects Effets - - - ContentLibraryEffect - Effect is imported to project - L'effet est importé dans le projet + User Assets + Ressources de l'utilisateur @@ -2300,22 +2207,14 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé. - ContentLibraryMaterial + ContentLibraryItem - Material is imported to project - Le matériau est importé dans le projet - - - Add an instance to project - Ajouter une instance au projet - - - Click to download material - Cliquer pour télécharger un matériau + Item is imported to the project + L'élément est importé dans le projet - ContentLibraryMaterialContextMenu + ContentLibraryItemContextMenu Apply to selected (replace) Appliquer à la sélection (remplacer) @@ -2332,6 +2231,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Remove from project Supprimer du projet + + Remove from Content Library + Supprimer de la bibliothèque de contenus + + + + ContentLibraryMaterial + + Material is imported to project + Le matériau est importé dans le projet + + + Add an instance to project + Ajouter une instance au projet + + + Click to download material + Cliquer pour télécharger un matériau + ContentLibraryMaterialsView @@ -2424,6 +2342,10 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Add light probe Ajouter une sonde de lumière + + Remove from Content Library + Supprimer de la bibliothèque de contenus + ContentLibraryTexturesView @@ -2436,6 +2358,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Aucun résultat. + + ContentLibraryUserView + + No match found. + Aucun résultat. + + + <b>Content Library</b> is not supported in Qt5 projects. + La <b>bibliothèque de contenus</b> n'est pas prise en charge dans les projets Qt5. + + + To use <b>Content Library</b>, first add the QtQuick3D module in the <b>Components</b> view. + Pour utiliser la <b>bibliothèque de contenus</b>, ajoutez d'abord le module QtQuick3D dans la vue <b>Composants</b>. + + + <b>Content Library</b> is disabled inside a non-visual component. + La <b>bibliothèque de contenus</b> est désactivée pour un composant non visible. + + ContextMenu @@ -2533,6 +2474,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.millisecondes. + + DeleteBundleItemDialog + + Remove bundle %1 + Supprimer le bundle %1 + + + Are you sure you? The action cannot be undone + Voulez-vous vraiment supprimer le bundle ? Cette action ne peut être annulée + + + Remove + Supprimer + + + Cancel + Annuler + + DesignerActionManager @@ -2625,6 +2585,22 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Sets the number by which the dial value changes. Définit l'écart entre deux valeurs du cadran. + + Start angle + Angle de début + + + Sets the starting angle of the dial in degrees. + Définit l'angle, en degrés, à partir duquel démarre le cadran. + + + End angle + Angle de fin + + + Sets the ending angle of the dial in degrees. + Définit l'angle, en degrés, où le cadran prend fin. + Sets how the dial's handle snaps to the steps defined in <b>Step size</b>. @@ -2785,38 +2761,11 @@ définit par la<b>taille du pas</b>. Activer/désactiver l'édition de la lumière - - EditPropertyDialog - - Edit Column - Modifier la colonne - - - Name - Nom - - - Type - Type - - - Conversion from %1 to %2 may lead to data loss - La conversion de %1 vers %2 peut entraîner une perte de données - - - Apply - Appliquer - - - Cancel - Annuler - - EffectComposer Remove all effect nodes. - Supprimer tous les nœuds d'effets. + Supprimer tous les nœuds d'effet. Open Shader in Code Editor. @@ -2832,6 +2781,51 @@ définit par la<b>taille du pas</b>. Le compositeur d'effet est désactivé dans les projets MCU + + EffectComposer::EffectComposerModel + + Animation + Animation + + + Running + En cours d'exécution + + + Set this property to animate the effect. + Définir cette propriété permet d'animer l'effet. + + + Time + Temps + + + This property allows explicit control of current animation time. + À relire + Cette propriété permet le contrôle explicite du temps de l'animation. + + + Frame + Trame + + + This property allows explicit control of current animation frame. + À relire + Cette propriété permet le contrôle explicite de la trame de l'animation. + + + General + Général + + + Extra Margin + Marge supplémentaire + + + This property specifies how much of extra space is reserved for the effect outside the parent geometry. + Cette propriété détermine l'espace supplémentaire réservé hors de la géométrie du parent à l'effet. + + EffectComposer::EffectComposerView @@ -2847,6 +2841,25 @@ définit par la<b>taille du pas</b>. Compositeur d'effet + + EffectComposer::Uniform + + X + X + + + Y + Y + + + Z + Z + + + W + W + + EffectComposerPreview @@ -2858,8 +2871,8 @@ définit par la<b>taille du pas</b>. Zoom arrière - Zoom Fit - Ajuster + Reset View + Réinitialiser la vue Restart Animation @@ -2898,14 +2911,13 @@ définit par la<b>taille du pas</b>. 2. Adjust the effect nodes properties 3. Change the order of the effects, if you like 4. See the preview -5. Save in the library, if you wish to reuse the effect later - Pour utiliser le ... ? +5. Save in the assets library, if you wish to reuse the effect later Comment utiliser le compositeur d'effet : 1. Cliquer sur « + Ajouter un effet » pour ajouter un nœud d'effet 2. Ajuster les propriétés des nœuds d'effet 3. Changer l'ordre des effets, si vous le souhaitez 4. Voir la prévisualisation -5. Enregistrer l'effet dans la bibliothèque, si vous souhaitez le réutiliser plus tard +5. Enregistrer l'effet dans la bibliothèque de ressources, si vous souhaitez le réutiliser plus tard @@ -2919,6 +2931,13 @@ définit par la<b>taille du pas</b>. Activer/désactiver le nœud + + EffectCompositionNodeUniform + + Reset value + Réinitialiser la valeur + + EffectNode @@ -2933,6 +2952,143 @@ définit par la<b>taille du pas</b>. + Ajouter un effet + + EffectsSection + + Effects <a style="color:%1;">[beta]</a> + Effets <a style="color:%1;">[bêta]</a> + + + Remove Effects + Supprimer les effets + + + Add Effects + Ajouter des effets + + + Adds visual effects on the component. + Ajoute des effets visuels au composant. + + + Visible + Visible + + + Toggles the visibility of visual effects on the component. + Active/désactive la visibilité des effets visuels du composant. + + + Layer Blur + Inspiration: https://docs.krita.org/fr/reference_manual/filters/blur.html + Filtre de floutage + + + Toggles the visibility of the <b>Layer Blur</b> on the component. + Active/désactive la visibilité du <b>filtre de floutage</b> du composant. + + + Blur + Flou + + + Sets the intensity of the <b>Layer Blur</b> on the component. + Définit l'intensité du <b>filtre de floutage</b> du composant. + + + Background Blur + Floutage du fond + + + Toggles the visibility of blur on the selected background component. + Active/désactive le floutage pour le composant en arrière-plan sélectionné. + + + Sets the intensity of blur on the selected background component. +The foreground component should be transparent, and the background component should be opaque. + Définit l'intensité du flou pour le composant en arrière-plan sélectionné. +Les composants au premier plan doivent être transparents et le composant en arrière-plan doit être opaque. + + + Background + Arrière plan + + + Sets a component as the background of a transparent component.The <b>Background Blur</b> works only on this component. The component should be solid. + Définit le composant comme arrière-plan d'un composant transparent. Le <b>floutage du fond</b> s'appliquera seulement sur ce composant. Le composant doit être opaque. + + + Drop Shadow + Ombre portée ? + Ombrage extérieur + + + Inner Shadow + Ombrage intérieur + + + Toggles the visibility of the component shadow. + Active/désactive l'ombrage du composant. + + + Sets the softness of the component shadow. A larger value causes the edges of the shadow to appear more blurry. + Définit la douceur de l'ombrage du composant. Une plus grande valeur rend les bordures de l'ombre plus floues. + + + Spread + Étendue + + + Resizes the base shadow of the component by pixels. + A revoir + Redimensionne la base de l'ombrage du composant en pixels. + + + Only supported for Rectangles. + Uniquement disponible avec les rectangles. + + + Color + Couleur + + + Sets the color of the shadow. + Définit la couleur de l'ombrage. + + + Offset + Décalage + + + Moves the shadow with respect to the component in X and Y coordinates by pixels. + Déplace ? + Décale l'ombrage par rapport au composant en X et Y, en pixels. + + + X-coordinate + Coordonnée X + + + Y-coordinate + Coordonnée Y + + + Show behind + Afficher derrière + + + Toggles the visibility of the shadow behind a transparent component. + Active/désactive l'ombrage derrière un composant transparent. + + + Add Shadow Effect + Ajouter un effet d'ombrage + + + Adds <b>Drop Shadow</b> or <b>Inner Shadow</b> effects to a component. + Ajoute un effet d'<b>ombrage extérieur</b> ou d'<b>ombrage intérieur</b> au composant. + + EmptyMaterialEditorPane @@ -3050,6 +3206,25 @@ définit par la<b>taille du pas</b>. Ajuster l’objet sélectionné à la vue + + FlagsComboBox + + empty + vide + + + %1 items selected + %1 éléments sélectionnés + + + Select All + Tout sélectionner + + + Select None + Tout désélectionner + + FlickableGeometrySection @@ -3569,18 +3744,50 @@ définit par la<b>taille du pas</b>. Columns & Rows Colonnes & lignes + + Sets the number of columns and rows in the <b>Grid Layout</b>. + Définit le nombre de colonnes et de lignes de l'<b>agencement en grille</b>. + Spacing Espacement + + Sets the space between the items in pixels in the rows and columns in the <b>Grid Layout</b>. + Définit l'espacement en pixels entre les éléments des lignes et colonnes dans l'<b>agencement en grille</b>. + Flow Flux + + Set the direction of dynamic items to flow in rows or columns in the <b>Grid Layout</b>. + Définit la direction du flux des éléments dynamiques dans les lignes et colonnes de l'<b>agencement en grille</b>. + Layout direction Direction du layout + + Sets the direction of the dynamic items left to right or right to left in the <b>Grid Layout</b>. + Définit la direction du flux des éléments dynamiques de gauche à droite ou de droite à gauche de l'<b>agencement en grille</b>. + + + Uniform cell sizes + Taille de cellules uniforme + + + Toggles all cells to have a uniform height or width. + Active/désactive une hauteur et largeur commune pour toutes les cellules. + + + Heights + Hauteurs + + + Widths + Largeurs + GridSpecifics @@ -3951,57 +4158,6 @@ ajouter un composant en surbrillance. Inverse l'image horizontalement. - - ImportDialog - - Import a model - Importer un modèle - - - Model path - Chemin du modèle - - - Select a model file - Sélectionner un fichier de modèle - - - Open - Ouvrir - - - Could not load the file - Impossible de charger le fichier - - - An error occurred while trying to load the file. - Une erreur s'est produite lors de la lecture du fichier. - - - File name - Nom du fichier - - - The model name - Le nom du modèle - - - File name can not be empty - Le nom du fichier ne peut pas être vide - - - The model name can not be empty - Le nom du modèle ne peut pas être vide - - - Import - Importer - - - Cancel - Annuler - - InsetSection @@ -4061,6 +4217,25 @@ ajouter un composant en surbrillance. Définit le nom de l'objet du composant. + + InvalidIdException + + Only alphanumeric characters and underscore allowed. +Ids must begin with a lowercase letter. + Seuls les caractères alphanumériques et les tirets du bas sont acceptés. +Les identifiants doivent commencer avec une lettre minuscule. + + + Ids have to be unique. + Les identifiants doivent être uniques. + + + Invalid Id: %1 +%2 + Identifiant invalide : %1 +%2 + + ItemDelegateSection @@ -4695,6 +4870,14 @@ ajouter un composant en surbrillance. Share Partager + + Share your project online. + Partager votre projet en ligne. + + + Sharing your project online is disabled in the Community Version. + Le partage du projet en ligne est désactivé dans la version communautaire. + More Items Plus d'éléments @@ -4915,6 +5098,10 @@ ajouter un composant en surbrillance. Create New Material Créer un nouveau matériau + + Add to Content Library + Ajouter à la bibliothèque de contenus + MaterialEditorToolBar @@ -5025,13 +5212,6 @@ ajouter un composant en surbrillance. Sortie vidéo cible. - - Message - - Close - Fermer - - ModelNodeOperations @@ -5227,38 +5407,7 @@ Erreur : Reparenting the component %1 here will cause the component %2 to be deleted. Do you want to proceed? - Redéfinir ici le parent du composant %1 entrainera la suppression du composant %2. Voulez-vous continuer ? - - - - NewCollectionDialog - - Add a new Model - Ajouter un nouveau modèle - - - Model - Modèle - - - The model name - Le nom du modèle - - - The model name can not be empty - Le nom du modèle ne peut pas être vide - - - The model name already exists %1 - Le nom de modèle « %1 » existe déjà - - - Create - Créer - - - Cancel - Annuler + Redéfinir ici le parent du composant %1 entraînera la suppression du composant %2. Voulez-vous continuer ? @@ -5776,6 +5925,13 @@ ajouter un composant en surbrillance. Violation d'ordre des événements MMAP entre les vidages de tampons détectée. Le moment de l'événement est: %1, temps maximum depuis le dernier vidage: %2. Cela peut interrompre l'analyse des données. + + PluginManager + + Failed Plugins + Greffons en échec + + PopupLabel @@ -5972,6 +6128,17 @@ est en cours. Cette propriété n’est pas disponible dans cette configuration. + + PuppetStarter + + Puppet is starting... + Démarrage de Puppet… + + + You can now attach your debugger to the %1 puppet with process id: %2. + Vous pouvez maintenant attacher votre débogueur au mode puppet %1 avec l'identifiant de processus : %2. + + QAbstractFileIconProvider @@ -6226,6 +6393,34 @@ Souhaitez-vous éditer cet effet ? Minimize Minimiser + + ID cannot start with an uppercase character (%1). + L'identifiant ne peut pas commencer avec un caractère majuscule (%1). + + + ID cannot start with a number (%1). + L'identifiant ne peut pas commencer avec un chiffre (%1). + + + ID cannot include whitespace (%1). + L'identifiant ne peut pas contenir d'espace (%1). + + + %1 is a reserved QML keyword. + %1 est un mot clé QML réservé. + + + %1 is a reserved property keyword. + %1 est un mot clé de propriété réservé. + + + ID includes invalid characters (%1). + L'identifiant contient des caractères invalides (%1). + + + Empty document + Document vide + QmlDesigner::AbstractEditorDialog @@ -6721,150 +6916,6 @@ Export des ressources : %2 Lie ce composant à la propriété du parent sélectionnée. - - QmlDesigner::CollectionSourceModel - - Node is not indexed in the models. - Le nœud n'est pas indexé dans les modèles. - - - Node should be a JSON model. - Le nœud doit être un modèle JSON. - - - A model with the identical name already exists. - Un modèle portant ce nom existe déjà. - - - Selected node must have a valid source file address - Le nœud sélectionné contient une adresse de fichier source valide - - - Can't read or write "%1". -%2 - Impossible de lire ou d'écrire « %1 ». -%2 - - - "%1" is corrupted. -%2 - « %1 » est corrompu. -%2 - - - Can't clean "%1". - Impossible de nettoyer « %1 ». - - - Can't write to "%1". - Impossible d'écrire dans « %1 ». - - - No model is available for the JSON model group. - Aucun modèle n'est disponible pour le groupe de modèles JSON. - - - JSON document type should be an object containing models. - Le type de document JSON doit être un objet contenant des modèles. - - - Rename Model - Renommer le modèle - - - Invalid node - Nœud invalide - - - Can't rename the node - Impossible de renommer le nœud - - - Invalid node type - Type de nœud invalide - - - The model group doesn't contain the old model name (%1). - Le groupe de modèles ne contient pas l'ancien nom du modèle (%1). - - - The model name "%1" already exists in the model group. - Le nom de modèle « %1 » existe déjà dans le groupe de modèles. - - - Delete Model - Supprimer le modèle - - - The selected node has an invalid source address - Le nœud sélectionné contient une adresse source invalide - - - The model group doesn't contain the model name (%1). - Le groupe de modèles ne contient pas le nom du modèle (%1). - - - - QmlDesigner::CollectionView - - Model Editor - Éditeur de modèle - - - Model Editor view - Vue de l'éditeur de modèle - - - - QmlDesigner::CollectionWidget - - Model Editor - Title of model editor widget - Éditeur de modèle - - - Cannot Create QtQuick View - Impossible de créer une vue QtQuick - - - StatesEditorWidget: %1 cannot be created.%2 - StatesEditorWidget : %1 ne peut être créé.%2 - - - File error - Erreur de fichier - - - Can not open the file to write. - - Impossible d'ouvrir le fichier en écriture. - - - - Can not add a model to the JSON file - Impossible d'ajouter un modèle au fichier JSON - - - The imported model is empty or is not supported. - Le modèle importé est vide ou non pris en charge. - - - Can not import to the main model - Impossible d'importer au modèle principal - - - The data store is not available. - Le stockage des données n'est pas disponible. - - - The default model node is not available. - Le nœud de modèle par défaut n'est pas disponible. - - - Failed to add a model to the default model group - Échec lors de l'ajout du modèle au groupe de modèles par défaut - - QmlDesigner::ColorTool @@ -6965,12 +7016,35 @@ Export des ressources : %2 Connexions + + QmlDesigner::ContentLibraryUserModel + + Materials + Matériaux + + + Textures + Textures + + + 3D + 3D + + QmlDesigner::ContentLibraryView Content Library Bibliothèque de contenus + + 3D Item Exists + L'élément 3D existe déjà + + + A 3D item with the same name '%1' already exists in the Content Library, are you sure you want to overwrite it? + Un élément 3D portant le même nom '%1' existe déjà dans la bibliothèque de contenus. Souhaitez-vous l'écraser ? + QmlDesigner::ContentLibraryWidget @@ -7095,11 +7169,30 @@ Export des ressources : %2 - QmlDesigner::DocumentWarningWidget + QmlDesigner::DocumentMessage - Always ignore these warnings about features not supported by Qt Quick Designer. - Toujours ignorer les avertissements liés aux fonctionnalités non supportées par Qt Quick Designer. + Error parsing + Erreur d'analyse + + Internal error + Erreur interne + + + line %1 + + ligne %1 + + + + column %1 + + colonne %1 + + + + + QmlDesigner::DocumentWarningWidget Cannot open this QML document because of an error in the QML file: Impossible d'ouvrir ce document QML à cause d'une erreur dans le fichier QML : @@ -7109,8 +7202,12 @@ Export des ressources : %2 OK - This QML file contains features which are not supported by Qt Quick Designer at: - Ce fichier QML contient des fonctionnalités qui ne sont pas supportées par Qt Quick Designer : + Turn off warnings about unsupported Qt Design Studio features. + Désactiver les avertissements à propos des fonctionnalités Qt Design Studio non prises en charge. + + + This QML file contains features which are not supported by Qt Design Studio at: + Ce fichier QML contient des fonctionnalités qui ne sont pas supportées par Qt Design Studio : Ignore @@ -7335,6 +7432,10 @@ Export des ressources : %2 Reset all shading options for all viewports. Réinitialiser toutes les options de rendu pour toutes les vues. + + Add to Content Library + Ajouter à la bibliothèque de contenus + 3D view is not supported in MCU projects. La vue 3D n'est pas prise en charge dans les projets MCU. @@ -7392,6 +7493,13 @@ Export des ressources : %2 Liste d'événements + + QmlDesigner::FileExtractor + + Choose Directory + Sélectionner un répertoire + + QmlDesigner::FilePathModel @@ -7542,6 +7650,13 @@ Export des ressources : %2 QML Resource File (*.qrc) Fichier de ressource QML (*.qrc) + + Successfully generated QRC resource file + %1 + ressoures ? + Fichier de ressource QRC généré avec succès + %1 + Generate Deployable Package... Générer un paquet déployable… @@ -7551,23 +7666,33 @@ Export des ressources : %2 Enregistrer le projet en tant que ressource - QML Resource File (*.qmlrc);;Resource File (*.rcc) - Fichier de ressource QML (*.qmlrc);;Fichier de ressource (*.rcc) + Generating deployable package. Please wait... + Génération du paquet déployable. Veuillez patienter… - Generate a resource file out of project %1 to %2 - Générer un fichier de ressource en dehors du projet %1 vers %2 + Failed to generate deployable package! + Échec de génération du paquet déployable ! + + + Error + Erreur + + + Failed to generate deployable package! + +Please check the output pane for more information. + Échec de génération du paquet déployable ! + +Veuillez vérifier le panneau de sortie pour plus d'informations. + + + Successfully generated deployable package + Génération du paquet déployable réussie Success Réussite - - Successfully generated deployable package - %1 - Génération du paquet déployable réussie - %1 - QmlDesigner::GlobalAnnotationDialog @@ -7718,6 +7843,59 @@ Export des ressources : %2 Réinitialiser l'espace de travail actif + + QmlDesigner::Internal::MetaInfoPrivate + + Invalid meta info + Métadonnées invalides + + + + QmlDesigner::Internal::MetaInfoReader + + Illegal state while parsing. + État illégal lors de l'analyse. + + + No property definition allowed. + Aucune définition de propriété permise. + + + Invalid type %1 + Type %1 invalide + + + Unknown property for Type %1 + Propriété inconnue pour le type %1 + + + Unknown property for ItemLibraryEntry %1 + Propriété inconnue pour ItemLibraryEntry %1 + + + Unknown property for Property %1 + Propriété inconnue pour Property %1 + + + Unknown property for QmlSource %1 + Propriété inconnue pour QmlSource %1 + + + Unknown property for ExtraFile %1 + Propriété inconnue pour ExtraFile %1 + + + Invalid or duplicate library entry %1 + Entrée de bibliothèque %1 invalide ou dupliquée + + + + QmlDesigner::Internal::ModelPrivate + + Exception thrown by view %1. + Exception lancée par la vue %1. + + QmlDesigner::Internal::SettingsPage @@ -7733,6 +7911,14 @@ Export des ressources : %2 Canvas Canevas + + If you select this radio button, Qt Design Studio always uses the QML emulation layer (QML Puppet) located at the following path. + Si vous sélectionnez ce bouton radio, Qt Design Studio utilisera toujours la couche d'émulation QML (QML Puppet) située au chemin suivant. + + + Warns about QML features that are not properly supported by the Qt Design Studio. + Avertit à propos des fonctionnalités QML qui ne sont pas prises en charge par Qt Design Studio. + Debugging Débogage @@ -7761,10 +7947,6 @@ Export des ressources : %2 Use fallback QML emulation layer Utiliser la couche d'émulation QML de secours - - If you select this radio button, Qt Quick Designer always uses the QML emulation layer (QML Puppet) located at the following path. - Si vous sélectionnez ce bouton radio, Qt Quick Designer utilisera toujours la couche d'émulation QML (QML Puppet) se trouvant au chemin suivant. - Path to the QML emulation layer executable (qmlpuppet). Chemin de l'exécutable de la couche d'émulation QML (qmlpuppet). @@ -7798,10 +7980,6 @@ Export des ressources : %2 Warn about unsupported features in .ui.qml files Avertir à propos des fonctionnalités non supportées dans les fichiers .ui.qml - - Warns about QML features that are not properly supported by the Qt Quick Designer. - Avertit à propos des fonctionnalités QML qui ne sont pas supportées par Qt Quick Designer. - Warn about using .qml files instead of .ui.qml files Avertir à propos de l'utilisation des fichiers .qml à la place des fichiers .ui.qml @@ -7967,6 +8145,13 @@ Export des ressources : %2 Propriété inconnue pour ExtraFile %1 + + QmlDesigner::InvalidArgumentException + + Failed to create item of type %1 + Échec lors de la création de l'élément de type %1 + + QmlDesigner::ItemLibraryAssetImportDialog @@ -7989,6 +8174,10 @@ Export des ressources : %2 Select import options and press "Import" to import the following files: Sélectionnez les options d'importation et appuyez sur "Importer" pour importer les fichiers suivants : + + Importing: + Importation de : + Locate 3D Asset "%1" Localiser la ressource 3D « %1 » @@ -8009,6 +8198,18 @@ Export des ressources : %2 Cancel Annuler + + Accept + Accepter + + + Import is ready for preview. + Le fichier importé peut être prévisualisé. + + + Click "Accept" to finish the import or adjust options and click "Import" to import again. + Cliquez sur « Accepter » pour finaliser l'importation ou ajustez les options et cliquez sur « Importer » pour importer à nouveau. + Close Fermer @@ -8072,6 +8273,10 @@ Export des ressources : %2 Could not access temporary asset directory: "%1". Impossible d'accéder au répertoire temporaire des ressources : « %1 ». + + Attempted to reimport non-existing asset: %1 + Tentative de réimportation d'une ressource inexistante : %1 + Failed to create qmldir file for asset: "%1". Échec lors de la création du fichier qmldir pour la ressource : « %1 ». @@ -8272,6 +8477,13 @@ Export des ressources : %2 Vue de l'éditeur de matériau + + QmlDesigner::Model + + Invalid Id + Identifiant invalide + + QmlDesigner::NavigatorSearchWidget @@ -8308,10 +8520,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -8360,6 +8568,21 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Inverser l'ordre des composants + + QmlDesigner::NodeInstanceView + + Qt Quick emulation layer crashed. + La couche d'émulation Qt Quick a planté. + + + Source item: %1 + Élément source : %1 + + + Failed to generate QSB file for: %1 + Échec de génération du fichier QSB pour : %1 + + QmlDesigner::NodeListModel @@ -8495,6 +8718,14 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.The QML file is not currently opened in a QML Editor. Le fichier QML n'est actuellement pas ouvert dans un éditeur QML. + + Qml Designer Lite + Qml Designer Lite + + + The Qml Designer Lite plugin is not enabled. + Le greffon Qml Designer Lite n'est pas activé. + Give Feedback... Faire un retour… @@ -8863,6 +9094,87 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.StatesEditorWidget : %1 ne peut être créé.%2 + + QmlDesigner::StudioConfigSettingsPage + + Qt Design Studio Configuration + Configuration de Qt Design Studio + + + + QmlDesigner::StudioSettingsPage + + Build + Compiler + + + Debug + Déboguer + + + Analyze + Analyser + + + Tools + Outils + + + Enable Experimental Features + Activer les fonctionnalités expérimentales + + + Hide top-level menus with advanced functionality to simplify the UI. <b>Build</b> is generally not required in the context of Qt Design Studio. <b>Debug</b> and <b>Analyze</b> are only required for debugging and profiling. <b>Tools</b> can be useful for bookmarks and git integration. + Cache les fonctionnalités avancées des menus de haut niveau pour simplifier l'interface. Le bouton <b>Compiler</b> n'est généralement pas nécessaire dans le contexte de Qt Design Studio. Les boutons <b>Déboguer</b> et <b>Analyser</b> ne sont nécessaires que pour le débogage et le profilage. Le bouton <b>Outils</b> peut être utile pour les signets et l'intégration Git. + + + Hide Menu + Cacher les menus + + + Examples + Exemples + + + Examples path: + Chemin des exemples : + + + Reset Path + Réinitialiser le chemin + + + Bundles + Bundles + + + Bundles path: + Chemin des bundles : + + + Experimental Features + Fonctionnalités expérimentales + + + This option enables experimental features in Qt Design Studio. Please provide feedback and bug reports at: %1 + Cette option active les fonctionnalités expérimentale dans Qt Design Studio. Veuillez envoyer vos retours et rapport de bogues à l'adresse : %1 + + + The menu visibility change will take effect after restart. + Le changement de la visibilité des menus prendra effet après le redémarrage. + + + Changing bundle path will take effect after restart. + Le changement du chemin des bundles prendra effet après le redémarrage. + + + + QmlDesigner::SubComponentManager + + My 3D Components + Mes composants 3D + + QmlDesigner::SwitchLanguageComboboxAction @@ -8897,6 +9209,26 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Vue du code + + QmlDesigner::TextToModelMerger + + No import statements found. + instruction? + Aucune mention d'importation n'a été trouvée. + + + Qt Quick 6 is not supported with a Qt 5 kit. + Qt Quick 6 n'est pas pris en charge avec un kit Qt 5. + + + The Design Mode requires a valid Qt kit. + Le mode Design nécessite un kit Qt valide. + + + No import for Qt Quick found. + Aucune importation de Qt Quick n'a été trouvée. + + QmlDesigner::TextureEditorView @@ -9006,10 +9338,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9073,10 +9401,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9360,10 +9684,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid ID Identifiant invalide - - %1 is an invalid ID. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9396,6 +9716,13 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Outil de transition + + QmlDesigner::View3DTool + + View3D Tool + Outil de vue 3D + + QmlDesignerAddResources @@ -9621,6 +9948,10 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Add Mouse Area Ajouter une zone de souris + + Edit in 3D View + Modifier dans la vue 3D + Open Signal Dialog Ouvrir la boîte de dialogue des signaux @@ -10337,8 +10668,40 @@ Installez-les manuellement après que l'opération en cours soit finie. L'installation des paquets du SDK Android peut échouer si les licences respectives ne sont pas acceptées. - SDK Manager is busy. - Le gestionnaire de SDK est occupé. + Finished successfully. + Terminé avec succès. + + + Installing / Uninstalling selected packages... + Installation/désinstallation des paquets sélectionnés… + + + Closing the preferences dialog will cancel the running and scheduled SDK operations. + La fermeture de la boîte de dialogue des préférences annulera les opération SDK en cours et planifiées. + + + Closing the options dialog will cancel the running and scheduled SDK operations. + La fermeture de la boîte de dialogue des options annulera les opérations du SDK en cours et planifiées. + + + Uninstalling %1... + Désinstallation de %1… + + + Installing %1... + Installation de %1… + + + Updating installed packages... + Mise à jour des paquets installés… + + + [Packages to be uninstalled:] + [Paquets à désinstaller :] + + + [Packages to be installed:] + [Paquets à installer :] %n Android SDK packages shall be updated. @@ -10347,68 +10710,6 @@ Installez-les manuellement après que l'opération en cours soit finie. %n paquets de SDK Android doivent être mis à jour. - - [Packages to be uninstalled:] - - [Paquets à désinstaller :] - - - - SDK Manager is busy. Operation cancelled. - Le gestionnaire de SDK est occupé. Opération annulée. - - - Installing/Uninstalling selected packages... - - Installation/désinstallation des paquets sélectionnés… - - - - Closing the %1 dialog will cancel the running and scheduled SDK operations. - - La fermeture de la boîte de dialogue %1 annulera les opérations en cours et planifiées du SDK. - - - - preferences - préférences - - - options - options - - - Updating installed packages... - - Mise à jour des paquets installés… - - - - Android SDK operations finished. - Les opérations du SDK Android sont terminées. - - - Operation cancelled. - - Opération annulée. - - - - -No pending operations to cancel... - - -Aucune opération en cours à annuler… - - - - -Cancelling pending operations... - - -Annulation des opérations en cours… - - SDK Manager Arguments Arguments du gestionnaire de SDK @@ -10825,14 +11126,6 @@ dans le navigateur système pour un téléchargement manuel. JDK location: Emplacement du JDK : - - Could not run: %1 - Impossible de démarrer : %1 - - - No devices found in output of: %1 - Aucun périphérique n’a été trouvé dans la sortie de : %1 - Android Debugger (%1, NDK %2) Débogueur Android (%1, NDK %2) @@ -11025,10 +11318,6 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Cannot find the androiddeployqt tool. Impossible de trouver l'outil androiddeployqt. - - Cannot find the package name from the Android Manifest file "%1". - Impossible de trouver le nom du paquet depuis le fichier Manifest Android « %1 ». - Uninstalling the previous package "%1". Désinstallation du paquet précédent « %1 ». @@ -11057,14 +11346,6 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Installing the app failed with an unknown error. Échec d'installation de l'application avec une erreur inconnue. - - Deployment failed with the following errors: - - - Échec du déploiement avec les erreurs suivantes : - - - Uninstalling the installed package may solve the issue. La désinstallation du paquet installé peut résoudre le problème. @@ -11105,6 +11386,14 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Pulling files necessary for debugging. Envoie des fichiers nécessaires au débogage. + + Cannot find the package name from AndroidManifest.xml nor build.gradle files at "%1". + Impossible de trouver le nom du paquet dans les fichiers AndroidManifest.xml ou build.gradle présents dans le répertoire « %1 ». + + + Deployment failed with the following errors: + Échec du déploiement avec les erreurs suivantes : + Android package (*.apk) Paquet Android (*.apk) @@ -11239,6 +11528,10 @@ Cela ne peut être annulé. Android Device Périphérique Android + + Android support is not yet configured. + La prise en charge d'Android n'a pas encore été configuré. + The device info returned from AvdDialog is invalid. Les informations retournées par le périphérique à travers AvdDialog sont invalides. @@ -11248,8 +11541,8 @@ Cela ne peut être annulé. Version inconnue d'Android. Niveau d'API : %1 - Error creating Android templates. - Erreur lors de la création des modèles Android. + Cannot open "%1". + Impossible d'ouvrir « %1 ». Cannot parse "%1". @@ -11644,14 +11937,6 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Cannot create AVD. Invalid input. Impossible de créer un périphérique AVD. Entrée invalide. - - Could not start process "%1". - Impossible de démarrer le processus « %1 ». - - - Cannot create AVD. Command timed out. - Impossible de créer le périphérique AVD. La commande a expiré. - Emulator Tool Is Missing Les outils de l'émulateur sont manquants @@ -11664,6 +11949,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper AVD Start Error Erreur de démarrage d'AVD + + Failed to start AVD emulator for "%1" device. + Impossible de démarrer l'émulateur AVD pour le périphérique « %1 ». + Master icon Icône principale @@ -11885,6 +12174,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Cancel Annuler + + Verifying package integrity... + Vérification de l'intégrité du paquet… + Unarchiving SDK Tools package... Désarchivage du paquet des outils SDK… @@ -11913,38 +12206,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Download from %1 was redirected. Le téléchargement à partir de %1 a été redirigé. - - The operation requires user interaction. Use the "sdkmanager" command-line tool. - L'opération nécessite une intéraction de l'utilisateur. Utilisez l'outil en ligne de commande « sdkmanager ». - - - Updating installed packages. - Mise à jour des paquets installés. - Failed. Échec. - - Done - Fini - - - Installing - Installation - - - Uninstalling - Désinstallation - - - Failed - Échec - - - License command failed. - Échec de la commande de licence. - Revision Révision @@ -12630,6 +12895,10 @@ Exécutable : %2 Warns if a test section does not check any assertion. Avertit si un test ne vérifie aucune assertion. + + Repeat Tests + Répéter les tests + Output on failure Sortie en cas d'échec @@ -12824,10 +13093,6 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr typed avec typage - - Active frameworks: - Cadriciels actifs : - Automatically run tests after build Exécuter automatiquement les tests après la compilation @@ -12844,6 +13109,27 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr Selected Sélectionné + + Apply path filters before scanning for tests. + Appliquer les filtres de chemin avant la recherche des tests. + + + Wildcard expressions for filtering: + Expressions joker pour le filtrage : + + + Add + Ajouter + + + Remove + Supprimer + + + Limit Files to Path Patterns + je ne suis pas certain de cette traduction + Limiter les motifs de fichiers vers chemin + Qt Test Qt Test @@ -13423,6 +13709,14 @@ Cela peut provoquer des problèmes lors de l'exécution. Number of worker threads used when scanning for tests. Nombre de threads utilisés pour la recherche des tests. + + Use a timeout while executing test cases. + Utiliser un délai de dépassement lors de l'exécution des cas de test. + + + Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. Overrides test framework or build system defaults. + Délai de dépassement utilisé lors de l'exécution des cas de tests. Le délai s'applique après chaque cas et non pour le projet complet. Remplace les valeurs par défaut du système de construction et du cadriciel de test. + Automatically scrolls down when new items are added and scrollbar is at bottom. Défile automatiquement vers le bas lors de l'ajout de nouveaux éléments et si la barre de défilement est en bas. @@ -13449,25 +13743,17 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Timeout: Délai d’attente : - - Timeout used when executing each test case. - Délai de dépassement utilisé lors de l'exécution de chaque cas de test. - s s - - Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. - Délai de dépassement utilisé lors de l'exécution de chaque cas de test. Le délai est appliqué à chaque cas de test indépendamment et non à l'intégralité du projet. - Scan threads: Threads de recherche : Selects the test frameworks to be handled by the AutoTest plugin. - Sélectionne le cadriciel de test devant être géré par le plug-in AutoTest. + Sélectionne le cadriciel de test devant être géré par le greffon AutoTest. Framework @@ -13503,7 +13789,7 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Enable or disable test frameworks to be handled by the AutoTest plugin. - Active ou désactive les cadriciels de test devant être gérés par le plug-in AutoTest. + Active ou désactive les cadriciels de test devant être gérés par le greffon AutoTest. Enable or disable grouping of test cases by folder. @@ -13515,7 +13801,7 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec You will not be able to use the AutoTest plugin without having at least one active test framework. - Vous ne pouvez pas utiliser le plug-in AutoTest sans avoir au minimum un cadriciel de test. + Vous ne pouvez pas utiliser le greffon AutoTest sans avoir au minimum un cadriciel de test. Mixing test frameworks and test tools. @@ -13623,6 +13909,10 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Total rows: Nombre de lignes totales : + + No Data + Aucune donnée + Show dashboard Afficher le tableau de bord @@ -13631,6 +13921,18 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Search for issues Recherche des problèmes + + Open Issue in Dashboard + Ouvrir le problème dans le tableau de bord + + + Open Table in Dashboard + Ouvrir le tableau dans le tableau de bord + + + Copy Dashboard Link to Clipboard + Copier le lien du tableau de bord dans le presse-papier + Axivion Axivion @@ -13737,6 +14039,10 @@ Souhaitez-vous ouvrir « %1 » avec l'application par défaut Open External Links Ouvrir les liens externes + + Search for issues inside the Axivion dashboard or request issue details for Axivion inline annotations to see them here. + Récupère les problèmes provenant du tableau de bord Axivion ou récupère les détails des annotations en ligne Axivion d'un problème afin de les voir ici. + Dashboard URL: URL du tableau de bord : @@ -13757,10 +14063,38 @@ Souhaitez-vous ouvrir « %1 » avec l'application par défaut User name Nom d'utilisateur + + Add... + Ajouter… + Edit... Modifier… + + Remove + Supprimer + + + Default dashboard server: + Serveur de tableau de bord par défaut : + + + unset + non défini + + + Remove Server Configuration + Supprimer la configuration du serveur + + + Remove the server configuration "%1"? + Supprimer la configuration du serveur « %1 » ? + + + Add Dashboard Configuration + Ajouter une configuration de tableau de bord + Edit Dashboard Configuration Modifier la configuration du tableau de bord @@ -15934,6 +16268,11 @@ Par exemple, « Revision : 15 » laissera la branche à la révis Display name for CMakeProjectManager::CMakeInstallStep id. Cmake Installation + + You may need to add the project directory to the list of directories that are mounted by the build device. + A revoir + Vous devez probablement ajouter le répertoire du projet à la liste des répertoires montés sur le périphérique de compilation. + The source directory %1 is not reachable by the CMake executable %2. Le répertoire source %1 n’est pas accessible par l’exécutable CMake %2. @@ -15982,6 +16321,10 @@ Par exemple, « Revision : 15 » laissera la branche à la révis Attempt to include "%1" which was already parsed. Tentative d’inclusion de %1 qui a déjà été analysé. + + CMake Preset (%1) %2 Debugger + Préréglage CMake (%1) de débogueur %2 + Unexpected source directory "%1", expected "%2". This can be correct in some situations, for example when importing a standalone Qt test, but usually this is an error. Import the build anyway? Répertoire source inattendu « %1 », attendu « %2 ». Cela peut être correct dans certaines situations, par exemple lors de l’importation d’un test Qt autonome, mais il s’agit généralement d’une erreur. Importer quand même la compilation ? @@ -16316,8 +16659,9 @@ Par exemple, « Revision : 15 » laissera la branche à la révis L’analyse CMake a été annulée. - CMake project configuration failed. No CMake configuration for build type "%1" found. - La configuration du projet CMake a échoué. Aucune configuration CMake pour le type de compilation « %1 » n’a été trouvée. + CMake project configuration failed. No CMake configuration for build type "%1" found. Check General Messages for more information. + General Messages refers to the output view + La configuration du projet CMake a échoué. Aucune configuration CMake pour le type de compilation « %1 » n'a été trouvé. Vérifiez les messages généraux pour plus d'informations. No "%1" CMake configuration found. Available configurations: "%2". @@ -16364,12 +16708,16 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty « Version » non valide dans le fichier « %1 ». - Invalid "configurePresets" section in %1 file - Section « configurePresets » non valide dans le fichier %1 + Invalid "configurePresets" section in file "%1". + Section « configurePresets » invalide dans le fichier « %1 ». - Invalid "buildPresets" section in %1 file - Section « buildPresets » non valide dans le fichier %1 + Invalid "buildPresets" section in file "%1". + Section « buildPresets » invalide dans le fichier « %1 ». + + + Invalid "vendor" section in file "%1". + Section « vendor » invalide dans le fichier « %1 ». @@ -16709,6 +17057,10 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty Generate Compilation Database Générer la base de données de compilation + + Generating Clang compilation database canceled. + Génération de la base de données de compilation Clang annulée. + Generate Compilation Database for "%1" Générer la base de données de compilation pour « %1 » @@ -16795,6 +17147,10 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty Enable Anyway Activer quand même + + Cannot use clangd: Generating compilation database canceled. + Impossible d'utiliser clangd : génération de la base de données de compilation annulée. + Cannot use clangd: Failed to generate compilation database: %1 @@ -17131,6 +17487,14 @@ Sortie : Suppress This Diagnostic Supprimer ce diagnostic + + Suppress Selected Diagnostics Inline + Supprimer les diagnostiques en ligne sélectionnés + + + Suppress This Diagnostic Inline + Supprimer ce diagnostique en ligne + Disable These Checks Désactiver ces vérifications @@ -18418,20 +18782,22 @@ Le code a été copié dans votre presse-papiers. Select path to node.js executable. See %1 for installation instructions. %1 is the URL to nodejs - Sélectionner le chemin menant à l'exécutable node.js. Voir %1 pour les instructions d'installation. + Sélectionnez le chemin menant à l'exécutable node.js. Consultez les instructions d'installation à l'adresse %1. - Path to agent.js: - Chemin vers agent.js : + Path to %1: + %1 is the filename of the copilot language server + Chemin vers %1 : - Agent.js path - Chemin Agent.js + %1 path + %1 is the filename of the copilot language server + Chemin %1 - Select path to agent.js in Copilot Neovim plugin. See %1 for installation instructions. - %1 is the URL to copilot.vim getting started - Sélectionner le chemin vers agent.js dans le plug-in Copilot Neovim Voir %1 pour les instructions d'installation. + Select path to %2 in Copilot Neovim plugin. See %1 for installation instructions. + %1 is the URL to copilot.vim getting started, %2 is the filename of the copilot language server + Sélectionnez le chemin vers %2 du greffon Copilot Neovim. Consultez les instructions d'installation à l'adresse %1. Auto Request @@ -18534,13 +18900,13 @@ Le code a été copié dans votre presse-papiers. L'activation de %1 est sujette à votre accord et votre conformité dans les termes applicables %1. Il est de votre responsabilité de connaître et d'accepter les prérequis et les conditions d'utilisation d'un outil comme %1. Cela peut inclure, mais n'est pas limité à, s'assurer d'avoir les droits de permettre à %1 d'accéder à votre code, ainsi que de comprendre les implications de votre utilisation de %1 et les suggestions produites (tels que les droits d'auteur, la précision, etc.). - The Copilot plugin requires node.js and the Copilot neovim plugin. If you install the neovim plugin as described in %1, the plugin will find the agent.js file automatically. + The Copilot plugin requires node.js and the Copilot neovim plugin. If you install the neovim plugin as described in %1, the plugin will find the %3 file automatically. Otherwise you need to specify the path to the %2 file from the Copilot neovim plugin. Markdown text for the copilot instruction label - Le plug-in Copilot nécessite node.js et le plug-in Copilot Neovim. Si vous installez le plug-in Neovim tel que décrit dans %1, le plug-in trouvera automatiquement le fichier agent.js. + Le greffon Copilot nécessite node.js et le greffon Copilot Neovim. Si vous installez le greffon Neovim comme indiqué à l'adresse %1, le greffon trouvera le fichier %3 automatiquement. -Sinon, vous devez spécifier le chemin menant au fichier %2 dans le plug-in Copilot Neovim. +Sinon, vous devez spécifier le chemin vers le fichier %2 du greffon Copilot Neovim. Note @@ -18695,6 +19061,10 @@ Sinon, vous devez spécifier le chemin menant au fichier %2 dans le plug-in Copi Pin Épingler + + Reopen Last Closed Document + Ré-ouvrir le dernier document fermé + Split Scinder @@ -19152,10 +19522,6 @@ provided they were unmodified before the refactoring. Crash Reporting Rapport de plantage - - The change will take effect after restart. - La modification prendra effet après le redémarrage. - Case Sensitive (Default) Sensible à la casse (par défaut) @@ -20184,11 +20550,16 @@ provided they were unmodified before the refactoring. Readable: - Lisible : + Lisible : Writable: - Écriture possible : + Écriture possible : + + + Executable: + adjective + Exécution possible : Symbolic link: @@ -20371,6 +20742,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Locator filters that do not update their cached data immediately, such as the custom directory filters, update it after this time interval. Les filtres de locator ne mettent pas à jour immédiatement leurs données mises en cache, tel que les filtres personnalisés de répertoire, celle-ci sont mise à jour après cet intervalle de temps. + + Locator filters show relative paths to the active project when possible. + Les filtres du localisateur affichent les chemins relatifs du projet actifs lorsque possible. + Files in Directories Fichiers dans les répertoires @@ -20593,10 +20968,6 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Description: Description : - - Executable: - Exécutable : - Arguments: Arguments : @@ -20690,6 +21061,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Change... Modifier… + + Executable: + noun + Exécutable : + Base environment: Environnement de base : @@ -21026,14 +21402,6 @@ Voulez-vous les écraser ? %2 - - Launching Windows Explorer Failed - Échec du lancement de l’explorateur Windows - - - Could not find explorer.exe in path to launch Windows Explorer. - explorer.exe introuvable dans le chemin pour lancer Windows Explorer. - The command for file browser is not set. La commande pour le navigateur de fichiers n’est pas définie. @@ -21570,10 +21938,18 @@ Souhaitez-vous les importer maintenant ? The platform executable suffix. Suffixe de l’exécutable de la plate-forme. + + The path to the running %1 itself. + Le chemin menant au programme %1. + The directory where %1 finds its pre-installed resources. Répertoire dans lequel %1 trouve ses ressources préinstallées. + + The directory where %1 puts custom user data. + Le répertoire où %1 écrit les données spécifiques à l'utilisateur. + The current date (QDate formatstring). La date actuelle (chaîne de formatage QDate). @@ -21843,6 +22219,15 @@ Double-cliquez pour modifier l’élément. Activate %1 View Activer la vue %1 + + output.txt + default file name suggested for saving text from output views + sortie.txt + + + Save Contents... + Enregistrer le contenu… + Elided %n characters due to Application Output settings @@ -22103,6 +22488,14 @@ Double-cliquez pour modifier l’élément. Interpret ambiguous headers as C headers Interpréter les en-têtes ambigus comme des en-têtes C + + Enable indexing + Activer l'indexation + + + Indexing should almost always be kept enabled, as disabling it will severely limit the capabilities of the code model. + L'indexation doit presque toujours rester active : sa désactivation limitera sévèrement les capacités du modèle de code. + Do not index files greater than Ne pas indexer les fichiers plus grands que @@ -22147,6 +22540,14 @@ Double-cliquez pour modifier l’élément. <p>If background indexing is enabled, global symbol searches will yield more accurate results, at the cost of additional CPU load when the project is first opened. The indexing result is persisted in the project's build directory. If you disable background indexing, a faster, but less accurate, built-in indexer is used instead. The thread priority for building the background index can be adjusted since clangd 15.</p><p>Background Priority: Minimum priority, runs on idle CPUs. May leave 'performance' cores unused.</p><p>Normal Priority: Reduced priority compared to interactive work.</p><p>Low Priority: Same priority as other clangd work.</p> <p>Si l’indexation en arrière-plan est activée, les recherches globales de symboles donneront des résultats plus précis, au prix d’une charge de travail supplémentaire du CPU lors de la première ouverture du projet. Le résultat de l’indexation est conservé dans le répertoire de construction du projet. Si vous désactivez l’indexation en arrière-plan, un indexeur intégré plus rapide, mais moins précis, est utilisé à la place. La priorité des threads pour la construction de l’index d’arrière-plan peut être ajustée depuis clangd 15.</p><p>Priorité d’arrière-plan : priorité minimale, s’exécute sur les processeurs inactifs. Peut laisser les cœurs de « performance » inutilisés.</p><p>Priorité normale : priorité réduite par rapport au travail interactif.</p><p>Priorité basse : même priorité que les autres travaux de clangd.</p> + + The location of the per-project clangd index.<p>This is also where the compile_commands.json file will go. + L'emplacement de l'index clangd par projet. <p>C'est aussi l'emplacement qu'aura le fichier compile_commands.json. + + + The location of the per-session clangd index.<p>This is also where the compile_commands.json file will go. + L'emplacement de l'index clangd par session. <p>C'est aussi l'emplacement qu'aura le fichier compile_commands.json. + <p>The C/C++ backend to use for switching between header and source files.</p><p>While the clangd implementation has more capabilities than the built-in code model, it tends to find false positives.</p><p>When "Try Both" is selected, clangd is used only if the built-in variant does not find anything.</p> <p>Le back-end C/C++ à utiliser pour alterner entre les en-têtes et les fichiers source.</p><p>Bien que l'implémentation clangd possède plus de fonctionnalités que le modèle de code intégré, clangd produit des faux positifs.</p><p>Lorsque « Essayer les deux » est sélectionné, clangd n'est utilisé que lorsque le modèle de code intégré ne trouve rien.</p> @@ -22163,6 +22564,10 @@ Double-cliquez pour modifier l’élément. Controls whether clangd may insert header files as part of symbol completion. Contrôle si clangd peut insérer des fichiers d’en-tête dans le cadre de la complétion de symboles. + + <p>Controls whether when editing a header file, clangd should re-parse all source files including that header.</p><p>Note that enabling this option can cause considerable CPU load when editing widely included headers.</p><p>If this option is disabled, the dependent source files are only re-parsed when the header file is saved.</p> + <p>Détermine si la modification d'un fichier d'en-tête déclenche l'analyse par clangd, des fichiers sources incluant ce fichier d'en-tête.</p><p>Notez que l'activation de cette option augmente considérablement la charge CPU lors de la modification d'un fichier d'en-tête fréquemment inclût.</p><p>Si cette option est désactivée, les fichiers sources dépendants ne seront ré-analysés que lors de l'enregistrement du fichier d'en-tête.</p> + Defines the amount of time %1 waits before sending document changes to the server. If the document changes again while waiting, this timeout resets. @@ -22187,6 +22592,10 @@ Le modèle de code intégré gèrera le surlignage, la complétion, etc.Insert header files on completion Insérer les fichiers d’en-tête dans la complétion + + Update dependent sources + Mise à jour des fichiers sources dépendants + Automatic Automatique @@ -22211,6 +22620,14 @@ Le modèle de code intégré gèrera le surlignage, la complétion, etc.Background indexing: Indexation en arrière-plan : + + Per-project index location: + Emplacement de l'index de projet : + + + Per-session index location: + Emplacement de l'index de session : + Header/source switch mode: Mode de basculement entête/source : @@ -22743,10 +23160,6 @@ Utilisez le glisser-déposer pour modifier l’ordre des paramètres.Evaluating type hierarchy... Évaluation de la hiérarchie de type… - - Type Hierarchy - Hiérarchie de type - C++ Symbols Symboles C++ @@ -23057,6 +23470,14 @@ dans le corps de la classe Déclarations dans la définition de « namespace » + + Macros that can be used as statements without a trailing semicolon. + Macros pouvant être utilisées comme expression sans être suivies de point-virgule. + + + Statement Macros + Macros instructions + Braces Accolades @@ -23281,6 +23702,22 @@ Les chemins peuvent être donnés en absolus ou en relatifs au dossier contenant Ces chemins sont utilisés en complément au répertoire actuel pour basculer entre les fichiers d’en-tête et de source. + + Header File Variables + Variables de fichier d'en-tête + + + Header file + Fichier d'en-tête + + + Use "#pragma once" instead + Utiliser « #pragma once » à la place + + + Include guard template: + Inclure les modèles de garde-fous : + S&uffix: S&uffixe : @@ -23317,10 +23754,6 @@ Ces chemins sont utilisés en complément au répertoire actuel pour basculer en **************************************************************************/ - - Use "#pragma once" instead of "#ifndef" guards - Utiliser « #pragma-once » au lieu du garde-fou « #ifndef » - &Lower case file names &Noms des fichiers en minuscule @@ -23353,10 +23786,6 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer &Prefixes: &Préfixes : - - Include guards - Garde-fous - Sources Sources @@ -23507,14 +23936,6 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer Open Type Hierarchy Ouvrir la hiérarchie de type - - Meta+Shift+T - Meta+Maj+T - - - Ctrl+Shift+T - Ctrl+Maj+T - Open Include Hierarchy Ouvrir la hiérarchie d’includes @@ -23902,6 +24323,44 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer collecting overrides... réception des surcharges… + + Convert Function Call to Qt Meta-Method Invocation + Convertir les appels de fonction en invocation de méthode Qt Meta + + + Move Class to a Dedicated Set of Source Files + Déplacer la classe vers un ensemble de fichiers sources dédiés + + + Header file only + Fichier d'en-tête seul + + + Project: + Projet : + + + Header file: + Fichier d'en-tête : + + + Implementation file: + Fichier d'implémentation : + + + Refusing to overwrite the following files: %1 + + Impossible d'écraser les fichiers suivants : %1 + + + + Failed to add to project file "%1": %2 + Impossible d'ajouter le fichier « %1 » au projet : %2 + + + Re-order Member Function Definitions According to Declaration Order + Ré-ordonner les définitions de fonction membres suivant l'ordre de déclaration + QtC::Cppcheck @@ -24201,6 +24660,10 @@ Souhaitez-vous tout de même les afficher ? Always adds a breakpoint on the <i>%1()</i> function. Ajoute toujours un point d’arrêt sur la fonction <i>%1()</i>. + + Behavior + Comportement + Default array size: Taille de tableau par défaut : @@ -24382,6 +24845,14 @@ Pour plus de détails, voir /etc/sysctl.d/10-ptrace.conf Edit Selected Breakpoints... Modifier les points d’arrêt sélectionnés… + + Disable All Breakpoints + Désactiver tous les points d'arrêt + + + Enable All Breakpoints + Activer tous les points d'arrêt + Disable Selected Locations Désactiver les emplacements sélectionnés @@ -25507,6 +25978,19 @@ par défaut de l’utilisateur au démarrage du débogueur. Use common locations for debug information Utiliser les emplacements actuels pour les informations de débogage + + Use debug info daemon + ou daemon ou service + Utiliser le démon fournissant les informations de débogage + + + Use system settings + Utiliser les paramètres du système + + + Lets GDB attempt to automatically retrieve debug information for system packages. + Laisse GDB essayer de récupérer automatiquement les informations de débogage pour les paquets systèmes. + Enable reverse debugging Activer le débogage inversé @@ -25899,6 +26383,10 @@ par défaut de l’utilisateur au démarrage du débogueur. DAP I/O Error Erreur d'E/S DAP + + "%1" could not be started. Error message: %2 + « %1 »n'a pas pu être démarré. Message d'erreur : %2 + The Pdb process failed to start. Either the invoked program "%1" is missing, or you may have insufficient permissions to invoke the program. Échec du démarrage du processus Pdb. Soit le programme « %1 » est manquant, soit les droits sont insuffisants pour exécuter le programme. @@ -26533,6 +27021,10 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si Launching Debugger Lancement du débogueur + + Launching %1 Debugger + Lancement du débogueur %1 + Switches the debugger to instruction-wise operation mode. In this mode, stepping operates on single instructions and the source location view also shows the disassembled instructions. Bascule le débogueur en mode de fonctionnement par instructions. Dans ce mode, le débogage opère sur des instructions individuelles et la vue de l’emplacement de la source montre également les instructions désassemblées. @@ -26802,6 +27294,10 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si GDB Preset Préréglage GDB + + LLDB Preset + Préréglage LLDB + Python Preset Préréglage Python @@ -27231,14 +27727,17 @@ Voulez-vous réessayer ? Enable %1 debugger. + %1 is C++, QML, or Python Activer le débogueur %1. Disable %1 debugger. + %1 is C++, QML, or Python Désactiver le débogueur %1. Try to determine need for %1 debugger. + %1 is C++, QML, or Python Essayer de déterminer si le débogueur %1 est nécessaire. @@ -28102,6 +28601,7 @@ L’accès au module ou la mise en place de points d’arrêt par fichier et par %1 of length %2 + <type> of length <number>, e.g. for strings and byte arrays %1 d'une longueur %2 @@ -29606,57 +30106,44 @@ La recompilation du projet peut aider. Extensions Extensions - - Get started - Démarrer - - - Install the extension from above. Installation starts automatically. You can always uninstall the extension afterwards. - Installer l'extension depuis l'emplacement ci-dessus. L'installation démarre automatiquement. Vous pourrez toujours désinstaller l'extension plus tard. - More information Plus d'informations - - Online Documentation - Documentation en ligne - - - Tutorials - Tutoriels - - - Examples - Exemples - - - Extension library details - Détails de la bibliothèque d'extensions - - - Size - Taille - - - Version - Version - - - Location - Emplacement - Extension details Détails de l'extension - - Released - Publiée + + Pack contains %n plugins. + + Le paquet contient %n greffon. + Le paquet contient %n greffons. + - Related tags - Étiquettes connexes + Load on start + Charger au démarrage + + + Restart Now + Redémarrer maintenant + + + Error + Erreur + + + Loaded + Chargé + + + Not loaded + Non chargé + + + Tags + Étiquettes Platforms @@ -29670,14 +30157,50 @@ La recompilation du projet peut aider. Extensions in pack Extensions dans le paquet + + Downloading... + Téléchargement… + + + Cancel + Annuler + + + Download Extension + Télécharger l'extension + + + Download Error + Erreur de téléchargement + + + Cannot download extension + Impossible de télécharger l'extension + + + Code: %1. + Code : %1. + Manage Extensions Gérer les extensions + + Search + Rechercher + Install... Installer… + + Use external repository + Utiliser un dépôt externe + + + Repository: %1 + Dépôt : %1 + QtC::ExtensionSystem @@ -29714,6 +30237,10 @@ La recompilation du projet peut aider. Dependencies: Dépendances : + + Loadable without restart: + Pouvant être chargé sans redémarrage + %1 (current: "%2") %1 (actuel : « %2 ») @@ -29823,7 +30350,7 @@ Le greffon est désactivé par un argument de ligne de commande. Plugin is required. - Le plugin est nécessaire. + Le greffon est nécessaire. Load on startup @@ -30005,6 +30532,10 @@ Raison : %3 Could not resolve dependency '%1(%2)' Impossible de résoudre la dépendance « %1(%2) » + + Cannot open file + Impossible d'ouvrir le fichier + "%1" is missing « %1 » est manquant @@ -30029,6 +30560,14 @@ Raison : %3 Value "%2" for key "%1" has invalid format La valeur « %2 » pour la clé « %1 » a un format invalide + + No IID found + IID non trouvé + + + Expected IID "%1", but found "%2" + IID « %1 » attendu, mais non trouvé « %2 » + Plugin meta data not found Les métadonnées du greffon n’ont pas été trouvées @@ -34596,44 +35135,8 @@ Souhaitez-vous les écraser ? Demander pour les périphériques qui ne sont pas en mode développeur - Rename - Renommer - - - Rename a simulator device. - Renommer un simulateur. - - - Delete - Supprimer - - - Delete simulator devices. - Supprimer un simulateur. - - - Reset contents and settings of simulator devices. - Réinitialise le contenu et les paramètres des simulateurs. - - - Create - Créer - - - Create a new simulator device. - Créer un nouveau simulateur. - - - Start - Démarrer - - - Start simulator devices. - Démarrer un simulateur. - - - Screenshot - Capture d’écran + Configure available simulator devices in <a href="%1">Xcode</a>. + Configurer les simulateurs de périphériques disponibles dans <a href="%1">Xcode</a>. Devices @@ -34643,116 +35146,6 @@ Souhaitez-vous les écraser ? Simulator Simulateur - - Screenshot directory: - Répertoire des captures d'écran : - - - You are trying to launch %n simulators simultaneously. This will take significant system resources. Do you really want to continue? - - Vous essayez de démarrer %n simulateur à la fois. Cela va prendre une part significative des ressources systèmes. Souhaitez-vous vraiment continuer ? - Vous essayez de démarrer %n simulateurs à la fois. Cela va prendre une part significative des ressources systèmes. Souhaitez-vous vraiment continuer ? - - - - Simulator Start - Démarrage du simulateur - - - Starting %n simulator device(s)... - - Démarrage de %n simulateur… - Démarrage de %n simulateurs… - - - - Cannot start simulator (%1, %2) in current state: %3. - Impossible de démarrer le simulateur (%1, %2) dans l'état actuel : %3. - - - simulator start - Démarrage du simulateur - - - Creating simulator device... - Création du simulateur… - - - Simulator device (%1) created. -UDID: %2 - Simulateur (%1) créé. -UDID : %2 - - - Simulator device (%1) creation failed. -Error: %2 - Échec lors de la création du simulateur (%1). -Erreur : %2 - - - Do you really want to reset the contents and settings of the %n selected device(s)? - - Souhaitez-vous vraiment réinitialiser le contenu et les paramètres d'%n périphérique sélectionné ? - Souhaitez-vous vraiment réinitialiser le contenu et les paramètres des %n périphériques sélectionnés ? - - - - Resetting contents and settings... - Réinitialisation du contenu et des paramètres… - - - simulator reset - Réinitialisation du simulateur - - - Rename %1 - Renommer %1 - - - Enter new name: - Entrer un nouveau nom : - - - Renaming simulator device... - Renommage du simulateur… - - - simulator rename - Renommage du simulateur - - - Delete Device - Supprimer un périphérique - - - Do you really want to delete the %n selected device(s)? - - Souhaitez-vous vraiment supprimer %n périphérique sélectionné ? - Souhaitez-vous vraiment supprimer les %n périphériques sélectionnés ? - - - - Deleting %n simulator device(s)... - - Suppression de %n simulateur… - Suppression de %n simulateurs… - - - - simulator delete - Suppression de simulateur - - - Capturing screenshots from %n device(s)... - - Capture d'écran à partir de %n périphérique… - Capture d'écran à partir de %n périphériques… - - - - simulator screenshot - Capture d'écran de simulateur - iOS build iOS BuildStep display name. @@ -34843,6 +35236,10 @@ Erreur : %2 OS version Version du système + + Product type + Type de produit + An iOS device in user mode has been detected. Un périphérique iOS en mode utilisateur a été détecté. @@ -34859,6 +35256,10 @@ Erreur : %2 Identifier: Identifiant : + + Product type: + Type de produit : + OS Version: Version du système : @@ -34920,6 +35321,10 @@ Erreur : %2 Debugging and profiling is currently not supported for devices with iOS 17 and later. Le débogage et le profilage n'est actuellement pas pris en charge avec les périphériques iOS 17 et supérieur. + + Update + Mettre à jour + Starting remote process. Démarrage des processus distants. @@ -34993,22 +35398,10 @@ Erreur : %2 iOS Simulator Simulateur iOS - - Create Simulator - Créer un simulateur - - - Simulator name: - Nom du simulateur : - Device type: Type de périphérique : - - OS version: - Version de l’OS : - None Aucun @@ -35137,50 +35530,6 @@ Date d'expiration : %3 Invalid simulator response. Device Id mismatch. Device Id = %1 Response Id = %2 Réponse du simulateur invalide. L'identifiant du périphérique ne correspond pas. Identifiant du périphérique = %1 Identifiant de réponse = %2 - - UDID: %1 - UDID : %1 - - - Simulator Name - Nom du simulateur - - - Runtime - Runtime - - - Current State - État actuel - - - Simulator Operation Status - Status des opérations du simulateur - - - %1, %2 -Operation %3 completed successfully. - %1, %2 -Opération %3 terminée avec succès. - - - %1, %2 -Operation %3 failed. -UDID: %4 -Error: %5 - %1, %2 -Opération %3 échouée. -UDID : %4 -Erreur : %5 - - - Unknown - Inconnue - - - Done. - Fait. - Failed to start process. Échec du démarrage du processus. @@ -35264,6 +35613,10 @@ Erreur : %5 Error %1 Erreur %1 + + Deprecated + Obsolète + Incoming Entrant @@ -35272,6 +35625,14 @@ Erreur : %5 Outgoing Sortant + + Bases + Bases + + + Derived + Dérivé + Call Hierarchy Hiérarchie d’appels @@ -35414,6 +35775,14 @@ Erreur : %5 Inspect Language Clients... Inspecter les fournisseurs de langages… + + Language Server Diagnostics + Diagnostiques du serveur de langage + + + Issues provided by the Language Server in the current document. + Problèmes fournis par le serveur de langage pour le document courant. + &Add &Ajouter @@ -35476,6 +35845,10 @@ Exemple : *.cpp%1*.h Language server-specific JSON to pass via "initializationOptions" field of "initialize" request. JSON spécifique au serveur à transmettre via le champ « initializationOptions » de la requête « initialize ». + + File pattern: + Motif de fichier : + Select MIME Types Sélectionner les types MIME @@ -35703,6 +36076,142 @@ Voir la documentation spécifique au serveur de langage pour la liste des param Supprimer %1 + + QtC::Lua + + Network Access + Accès au réseau + + + Allow Internet Access + Permettre l'accès au réseau + + + Allow the extension "%1" to fetch from the following URL: +%2 + de l'URL ? + Permet à l'extension « %1 » de récupérer le contenu à l'URL : +%2 + + + Remember choice + Se rappeler du choix + + + Allow the extension "%1" to fetch data from the internet? + Permettre à l'extension « %1 » de récupérer des données depuis Internet ? + + + Allow the extension "%1" to fetch datafrom the following URL: + + + Permettre à l'extension « %1 » de récupérer des données depuis l'URL suivante : + + + + + Always Allow + Toujours permettre + + + Allow Once + Permettre une seule fois + + + Deny + Refuser + + + Fetching is not allowed for the extension "%1". (You can edit permissions in Preferences > Lua.) + ajouter "en ligne" ? + La récupération de données n'est pas autorisée pour l'extension « %1 ». (Vous pouvez éditer les permissions dans Préférences > Lua.) + + + Package info is not an object. + L'information du paquet n'est pas un objet. + + + Installed package info is not an object. + L'information du paquet installé n'est pas un objet. + + + Cannot create app data directory. + Impossible de créer le répertoire pour les données de l'application. + + + Cannot write to package info: %1 + Impossible d'écrire l'information du paquet : %1 + + + Cannot write to temporary file. + Impossible d'écrire le fichier temporaire. + + + Unarchiving failed. + Échec du désarchivage. + + + Cannot open temporary file. + Impossible d'ouvrir le fichier temporaire. + + + Installing package(s) %1 + Installation des paquet(s) %1 + + + Install Package + Installer le paquet + + + The extension "%1" wants to install the following package(s): + + + L'extension « %1 » souhaite installer le(s) paquet(s) suivant(s) : + + + + + Install + Installer + + + * %1 - %2 (from: [%3](%3)) + Markdown list item: %1 = package name, %2 = version, %3 = URL + * %1 - %2 (depuis : [%3](%3)) + + + Failed to run script %1: %2 + Impossible d'exécuter le script %1 : %2 + + + No hook with the name "%1" found. + Aucun crochet avec le nom « %1 » n'a été trouvé. + + + Script did not return a table. + Le script n'a pas retourné de tableau. + + + Extension info table did not contain a setup function. + Le tableau d'informations de l'extension ne contient pas de fonction d'installation. + + + Cannot prepare extension setup: %1 + Impossible de préparer l'installation de l'extension : %1 + + + Extension setup function returned false. + La fonction d'installation de l'extension a renvoyé faux. + + + Extension setup function returned error: %1 + La fonction d'installation de l'extension a renvoyé l'erreur %1 + + + Failed to load plugin %1: %2 + Échec de chargement du greffon %1 : %2 + + QtC::Macros @@ -36140,6 +36649,10 @@ Voir la documentation spécifique au serveur de langage pour la liste des param No CMake tool was detected. Add a CMake tool in the <a href="cmake">CMake options</a> and select Apply. Aucun outil CMake détecté. Ajoutez un outil CMake dans les <a href="cmake">options CMake</a> et cliquez sur Appliquer. + + Cannot apply changes in Devices > MCU. + Impossible d'appliquer les changements dans Périphériques > MCU. + Qt for MCUs Kit Creation Création de kit Qt pour MCUs @@ -36176,10 +36689,6 @@ Voir la documentation spécifique au serveur de langage pour la liste des param Status État - - Unable to apply changes in Devices > MCU. - Impossible d'appliquer les changements dans Périphériques > MCU. - No target selected. Aucune cible sélectionnée. @@ -36881,6 +37390,15 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Add Canvas Diagram Ajouter un diagramme de canevas + + Toggle View and Filter Settings + View and Filter Settings ? + Active/désactive les paramètres de la vue et des filtres + + + Ctrl+Shift+L + Ctrl+Maj+L + Synchronize Browser and Diagram Synchroniser le navigateur et le diagramme @@ -36905,6 +37423,18 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Return Entrée + + Opening File + Ouverture du fichier + + + File "%1" does not exist. + Le fichier « %1 » n'existe pas. + + + Add Related Elements... + Ajouter des éléments liés… + Update Include Dependencies Mise à jour des dépendances d’inclusion @@ -36917,10 +37447,34 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Config path: Chemin de la configuration : + + Select File Target + Sélectionner le fichier cible + + + Linked file: + Fichier lié : + + + Select Image File + Sélectionner le fichier image + + + Image: + Image : + <font color=red>Model file must be reloaded.</font> <font color=red>Le fichier de modèle doit être rechargé.</font> + + Selecting Image + Sélection de l'image + + + Unable to read image file "%1". + Impossible de lire le fichier image « %1 ». + No model loaded. Cannot save. Aucun modèle chargé. Impossible d'enregistrer. @@ -37041,6 +37595,18 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Add Class %1 Ajouter la classe %1 + + Add Package Link to %1 + Ajouter un lien de paquet vers %1 + + + Add Diagram Link to %1 + Ajouter un lien de diagramme vers %1 + + + Add Document Link to %1 + Ajouter un lien de document vers %1 + Add Package %1 Ajouter le paquet %1 @@ -38609,6 +39175,11 @@ Title of a the cloned RunConfiguration window, text of the window Do you really want to delete build configuration <b>%1</b>? Voulez-vous vraiment supprimer la configuration de compilation <b>%1</b> ? + + compile-output.txt + file name suggested for saving compile output + sortie-compilation.txt + Show Compile &Output Afficher la &sortie de compilation @@ -39073,6 +39644,10 @@ Title of a the cloned RunConfiguration window, text of the window Cancel Build Annuler la compilation + + Open Workspace... + Ouvrir l'espace de travail… + Add New... Ajouter un nouveau… @@ -39102,6 +39677,10 @@ Title of a the cloned RunConfiguration window, text of the window Load Project Charger un projet + + Open Workspace + Ouvrir l'espace de travail + New Project Title of dialog @@ -39366,10 +39945,6 @@ Souhaitez-vous les ignorer ? <h3>Project already open</h3> <h3>Le projet est déjà ouvert</h3> - - Failed opening project "%1": Project is not a file. - Échec de l’ouverture du projet « %1 » : le projet n’est pas un fichier. - Failed opening project "%1": No plugin can open project type "%2". Échec de l’ouverture du projet « %1 » : aucun greffon ne peut ouvrir le type de projet « %2 ». @@ -39738,6 +40313,16 @@ Renommer quand même %2 en %3 ? Current directory Répertoire actuel + + s + Suffix for "seconds" + s + + + The amount of seconds to wait between a "soft kill" and a "hard kill" of a running application. + mort douce ? + Le nombre de secondes à attendre entre une « mort douce » et une « mort brutale » de l'application en cours d'exécution. + Directory Répertoire @@ -39818,6 +40403,14 @@ Renommer quand même %2 en %3 ? Deduced from Project Déduit du projet + + Show all kits in "Build & Run" in "Projects" mode + Afficher tous les kits dans « Compiler et exécuter » dans le mode « Projets » + + + Show also inactive kits in "Build & Run" in "Projects" mode. + Afficher aussi les kits inactifs dans « Compiler et exécuter » dans le mode « Projets ». + Environment changes to apply to run configurations, but not build configurations. Changements de l'environnement à appliquer aux configurations d'exécution, mais pas aux configurations de compilation. @@ -39842,6 +40435,10 @@ Renommer quand même %2 en %3 ? Default for "Run in terminal": Valeur par défaut pour « Exécuter dans un terminal » : + + Time to wait before force-stopping applications: + Temps d'attente avant de forcer l'arrêt des applications : + Always deploy project before running it Toujours déployer le projet avant de l’exécuter @@ -39866,6 +40463,10 @@ Renommer quand même %2 en %3 ? Default build directory: Répertoire par défaut de compilation : + + Template used to construct the default build directory.<br><br>The default value can be set using the environment variable <tt>%1</tt>. + Modèle utilisé pour construire le chemin de compilation par défaut.<br><br>La valeur par défaut peut être définie au travers de la variable d'environnement <tt>%1</tt>. + QML debugging: Débogage QML : @@ -40179,10 +40780,6 @@ Display name of the clean build step list. Used as part of the labels in the pro Qt Plugin Greffon Qt - - %{JS: value('Type') === 'qtplugin' ? value('BaseClassName').slice(1) : (value('ProjectName').charAt(0).toUpperCase() + value('ProjectName').slice(1))} - %{JS: value('Type') === 'qtplugin' ? value('NomClasseParent').slice(1) : (value('NomDuProjet').charAt(0).toUpperCase() + value('NomDuProjet').slice(1))} - Class name: Nom de la classe : @@ -40235,18 +40832,10 @@ Display name of the clean build step list. Used as part of the labels in the pro Qt module: Module Qt : - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++hdr'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-c++hdr'))} - Header file: Fichier d’en-tête : - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++src'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-c++src'))} - Source file: Fichier source : @@ -40339,16 +40928,6 @@ You should not mix multiple test frameworks in a project. Vous ne devez pas mélanger plusieurs cadriciels de tests dans un même projet. - - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Cpp.cxxSourceSuffix()} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Cpp.cxxSourceSuffix()} - - - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} - Test Information Information de test @@ -40525,10 +41104,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Branch: Branche : - - %{defaultDir} - %{repertoireParDefaut} - Directory: Répertoire : @@ -40557,6 +41132,26 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Checkout Checkout + + Creates a translation file that you can add to a Qt project. + Crée un fichier de traduction que vous pouvez ajouter au projet Qt. + + + Qt Translation File + Fichier de traduction Qt + + + 2.x + 2.x + + + 3.x + 3.x + + + Catch2 version: + Version de Catch2 : + Clones a Git repository and tries to load the contained project. Clone un dépôt Git et essaye de charger le projet contenu. @@ -40701,18 +41296,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio This wizard generates a Qt Widgets Application project. The application derives by default from QApplication and includes an empty widget. Cet assistant génère un projet d’application Qt avec widgets. L’application dérive par défaut de QApplication et inclut un widget vide. - - %{JS: value('BaseClass') ? value('BaseClass').slice(1) : 'MyClass'} - %{JS: value('ClasseParent') ? value('ClasseParent').slice(1) : 'MaClasse'} - Generate form Générer le formulaire - - %{JS: Cpp.classToFileName(value('Class'), 'ui')} - %{JS: Cpp.classToFileName(value('Classe'), 'ui')} - Form file: Fichier d’interface : @@ -40741,18 +41328,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Plain C Application Application C simple - - %{JS: value('BaseCB') ? value('BaseCB').slice(1) : 'MyClass'} - %{JS: value('BaseCB') ? value('BaseCB').slice(1) : 'MaClasse'} - - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-python'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-python'))} - - - %{JS: Util.fileName('%{ProjectName}', 'pyproject')} - %{JS: Util.fileName('%{NomDuProjet}', 'projetpy')} - Project file: Fichier du projet : @@ -40825,14 +41400,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Qt Console Application Application Qt en console - - This wizard creates a simple unit test project. - Cet assistant génère un projet de test unitaire simple. - - - Qt Test - Qt Test - Google Test Google Test @@ -40877,6 +41444,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Generate initialization and cleanup code Génère le code d’initialisation et de nettoyage + + Creates a project that you can open in Qt Design Studio + Crée un projet que vous pouvez ouvrir dans Qt Design Studio + Creates a project with a structure that is compatible both with Qt Design Studio (via .qmlproject) and with Qt Creator (via CMakeLists.txt). It contains a .ui.qml form that you can visually edit in Qt Design Studio. Génère un projet avec une structure compatible avec Qt Design Studio (via .qmlproject) et avec Qt Creator (via CMakeLists.txt). Le projet contient un formulaire .ui.qml qui peut être éditer visuellement dans Qt Design Studio. @@ -40889,6 +41460,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Qt 6.5 Qt 6.5 + + The minimum version of Qt you want to build the application for + La version minimale de Qt avec laquelle vous pouvez compiler l'application + Creates a Qt Quick application that can have both QML and C++ code. You can build the application and deploy it to desktop, embedded, and mobile target platforms. @@ -40917,6 +41492,62 @@ Preselects a desktop Qt for building the application if available. Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si disponible. + + This wizard creates a simple unit test project using Qt Test. + Cet assistant crée un projet simple de tests unitaires utilisant Qt Test. + + + Creates a new unit test project using Qt Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Qt Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Test Project + Projet de tests + + + Qt Test Project + Projet de tests Qt + + + This wizard creates a simple unit test project using Qt Quick Test. + Cet assistant crée un projet simple de tests unitaires utilisant Qt Quick Test. + + + Creates a new unit test project using Qt Quick Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Qt Quick Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Qt Quick Test Project + Projet de tests Qt Quick + + + This wizard creates a simple unit test project using Google Test. + Cet assistant crée un projet simple de tests unitaires utilisant Google Test. + + + Google Test (header only) + Google Test (fichiers d'en-tête seuls) + + + Google Test (shared libraries) + Google Test (bibliothèques partagées) + + + Googletest install directory (optional): + Répertoire d'installation de Google Test (optionnel) : + + + Creates a new unit test project using Google Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Google Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Google Test Project + Projet de tests Google + + + This wizard creates a simple unit test project using Boost. + Cet assistant crée un projet simple de tests unitaires utilisant Boost. + Boost Test (header only) Test Boost (entête seulement) @@ -40925,10 +41556,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Boost Test (shared libraries) Test Boost (bibliothèques partagées) - - Enable C++11 - Activer le C++11 - Googletest source directory (optional): Répertoire source de Googletest (optionnel) : @@ -40953,14 +41580,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Project and Test Information Projet et information des tests - - 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. - Génère un nouveau projet de test unitaire. Les tests unitaires permettent de vérifier que le code est utilisable et qu’il n’y a pas de régression. - - - Auto Test Project - Tester automatiquement le projet - Qt for Python module: Module de Qt pour Python : @@ -40969,10 +41588,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d You can choose Qt classes only if you select a Qt for Python module. Vous ne pouvez choisir des classes Qt que si vous sélectionnez un module Qt pour Python. - - %{BaseCB} - %{BaseCB} - Import QtCore Importer QtCore @@ -40985,10 +41600,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Import QtQuick Importer QtQuick - - %{JS: Util.fileName(value('Class'), Util.preferredSuffix('text/x-python'))} - %{JS: Util.fileName(value('Classe'), Util.preferredSuffix('text/x-python'))} - Creates new Python class file. Génère un nouveau fichier de classe Python. @@ -40997,6 +41608,42 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Python Python + + Creates a new unit test project using Boost. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Boost. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Boost Test Project + Projet de tests Boost + + + This wizard creates a simple unit test project using Catch2. + Cet assistant crée un projet simple de tests unitaires utilisant Catch2. + + + Catch2 v2 (header only) + Catch2 v2 (fichiers d'en-tête seuls) + + + Catch2 v3 (shared libraries) + Catch2 v3 (bibliothèques partagées) + + + Catch2 install directory (optional): + Répertoire d'installation de Catch2 (optionnel) : + + + Use own main + Utiliser votre propre fonction main + + + Creates a new unit test project using Catch2. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Catch2. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Catch2 Test Project + Projet de tests Catch2 + Python Class Classe Python @@ -41033,24 +41680,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Qt Qt - - Creates a project that you can open in Qt Design Studio. - Crée un projet qui peut être ouvert dans Qt Design Studio. - - - The minimum version of Qt you want to build the application for. - La version minimale de Qt pour laquelle vous voulez compiler votre application. - - - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxHeaderSuffix())} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxHeaderSuffix())} - - - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxSourceSuffix())} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxSourceSuffix())} - Qt Item Model Modèle d’élément Qt @@ -41071,14 +41700,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Include QMainWindow Inclure QMainWindow - - Include QDeclarativeItem - Qt Quick 1 - Inclure QDeclarativeItem - Qt Quick 1 - - - Include QQuickItem - Qt Quick 2 - Inclure QQuickItem - Qt Quick 2 - Include QSharedData Inclure QSharedData @@ -41099,6 +41720,10 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d C/C++ C/C++ + + Include QQuickItem + Inclure QQuickItem + C++ Class Classe C++ @@ -41107,16 +41732,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Creates a CMake-based test project for which a code snippet can be entered. Génère un projet de test fondé sur CMake pour lequel un extrait de code peut être saisi. - - int main(int argc, char *argv[]) -{ - return 0; -} - int main(int argc, char *argv[]) -{ - return 0; -} - QtCore QtCore @@ -41357,10 +41972,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Specify details about your custom Qt Creator plugin. Indiquer les détails de votre greffon pour Qt Creator personnalisé. - - %{JS: value('ProjectName').charAt(0).toUpperCase() + value('ProjectName').slice(1)} - %{JS: value('NomDuProjet').charAt(0).toUpperCase() + value('NomDuProjet').slice(1)} - MyCompany MonEntreprise @@ -41377,10 +41988,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Put a short description of your plugin here Indiquer ici une courte description de votre greffon - - https://www.%{JS: encodeURIComponent(value('VendorName').toLowerCase())}.com - https://www.%{JS: encodeURIComponent(value('NomDuVendeur').toLowerCase())}.com - URL: URL : @@ -41575,7 +42182,12 @@ The name of the build configuration created by default for a generic project. %1: Full path to main file. %1 is something like "Active project" - %1 : chemin complet ver le fichier main. + %1 : chemin complet vers le fichier principal. + + + %1: Full path to Project Directory. + %1 is something like "Active project" + %1 : chemin complet vers le répertoire du projet. %1: The name of the active kit. @@ -41642,6 +42254,14 @@ The name of the build configuration created by default for a generic project.&Configure Project &Configurer le projet + + Show All Kits + Afficher tous les kits + + + Hide Inactive Kits + Cacher les kits inactifs + Kit is unsuited for project Le kit n’est pas adapté au projet @@ -42042,6 +42662,11 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Stop running program. Arrêter l’exécution du programme. + + application-output-%1.txt + file name suggested for saving application output, %1 = run configuration display name + sortie-application-%1.txt + Word-wrap output Retour à la ligne automatique @@ -42779,6 +43404,22 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Type of the project's active build configuration Type de configuration de compilation active du projet + + No build device is set for the kit "%1". + Aucun périphérique de compilation n'est défini pour le kit « %1 ». + + + You can try mounting the folder in your device settings. + Vous pouvez essayer de monter le répertoire dans les paramètres du périphérique. + + + The build device "%1" cannot reach the project directory. + Le périphérique de compilation « %1 » ne peut accéder au répertoire du projet. + + + The build device "%1" cannot reach the build directory. + Le périphérique de compilation « %1 » ne peut accéder au répertoire de compilation. + Remove Name of the action triggering the removetaskhandler @@ -42912,18 +43553,6 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u DebugBreakProcess failed: DebugBreakProcessus a échoué : - - %1 does not exist. If you built %2 yourself, check out https://code.qt.io/cgit/qt-creator/binary-artifacts.git/. - %1 n’existe pas. Si vous avez compilé %2 vous-même, consultez https://code.qt.io/cgit/qt-creator/binary-artifacts.git/. - - - Cannot start %1. Check src\tools\win64interrupt\win64interrupt.c for more information. - Impossible de démarrer %1. Vérifier src\tools\win64interrupt\win64interrupt.c pour plus d’information. - - - could not break the process. - Impossible d’interrompre le processus. - Import Build From... Importer la compilation depuis… @@ -43559,6 +44188,16 @@ au projet « %2 ». * Failed to parse "%1":%2:%3: %4 * Échec de l’analyse de « %1 »:%2:%3 : %4 + + * Did not find a JSON object in "%1". + + * N’a pas trouvé d’objet JSON dans « %1 ». + + + + JsonWizard: "%1" not found. + Assistant Json : « %1 » introuvable. + * Did not find a JSON object in "%1". * N’a pas trouvé d’objet JSON dans « %1 ». @@ -43567,10 +44206,6 @@ au projet « %2 ». * Configuration found and parsed. * La configuration a été trouvée et analysée. - - JsonWizard: "%1" not found - Assistant Json : « %1 » introuvable. - Page is not an object. La page n’est pas un objet. @@ -43943,6 +44578,14 @@ Que doit faire %1 maintenant ? Run as root user Exécuter en tant que super-utilisateur + + Emulator + Émulateur + + + Launcher: + Lanceur : + Interpreter Interpréteur @@ -44118,12 +44761,45 @@ Ces fichiers sont préservés. unavailable indisponible + + You can edit this configuration inside the .qtcreator/project.json file. + Vous pouvez modifier cette configuration dans le fichier .qtcreator/project.json. + + + Exclude from Project + Exclure du projet + + + Rescan Workspace + Ré-analyser l'espace de travail + QtC::Python - Install Python Packages - Installer les paquets Python + Update Requirements + Mettre à jour les paquets nécessaires + + + Install Requirements + Installer les paquets nécessaires + + + Update %1 + %1 = package name + Mettre à jour %1 + + + Install %1 + Installer %1 + + + Update Packages + Mettre à jour les paquets + + + Install Packages + Installer les paquets Running "%1" to install %2. @@ -44261,6 +44937,22 @@ Ces fichiers sont préservés. Install Python language server (PyLS) for %1 (%2). The language server provides Python specific completion and annotation. Installer le serveur de langages Python (PyLS) pour %1 (%2). Le serveur de langages fournit des complétions et des annotations spécifiques à Python. + + Update Python language server (PyLS) for %1 (%2). + Mettre à jour le serveur de langage Python (PyLS) pour %1 (%2). + + + Always Update + Toujours mettre à jour + + + Update + Mettre à jour + + + Never + Jamais + Unable to read "%1": The file is empty. Impossible de lire « %1 » : le fichier est vide. @@ -44828,8 +45520,8 @@ Les fichiers affectés sont : Périphérique « %1 » %2 - Qt Debug Bridge device %1 - Périphérique Qt Debug Bridge %1 + Boot to Qt device %1 + Périphérique Boot to Qt %1 Device detection error: %1 @@ -44875,10 +45567,6 @@ Les fichiers affectés sont : Starting QDB host server. Démarrage du serveur QDB hôte. - - Deploy to Boot2Qt target - Déployer la cible Boot2Qt - Starting command "%1" on device "%2". Démarrage de la commande « %1 » sur le périphérique « %2 ». @@ -44891,21 +45579,21 @@ Les fichiers affectés sont : Command failed on device "%1". Commande échouée sur le périphérique « %1 ». - - stdout was: "%1" - La sortie standard était : « %1 » - - - stderr was: "%1" - La sortie d'erreur était : « %1 » - Commands on device "%1" finished successfully. Les commandes sur le périphérique « %1 » se sont terminées avec succès. - Boot2Qt Device - Périphérique Boot2Qt + stdout was: "%1". + La sortie standard était : « %1 ». + + + stderr was: "%1". + La sortie d'erreur était : « %1 ». + + + Boot to Qt Device + Périphérique Boot to Qt Reboot Device @@ -44940,8 +45628,8 @@ Les fichiers affectés sont : Adresse du périphérique : - Boot2Qt Network Device Setup - Configuration du périphérique réseau Boot2Qt + Boot to Qt Network Device Setup + Configuration du périphérique réseau Boot to Qt Application set as the default one. @@ -44980,14 +45668,22 @@ Les fichiers affectés sont : Refers to Boot2Qt Flasher un périphérique Boot2Qt + + Deploy to Boot to Qt target + Déployer la cible Boot to Qt + Full command line: - Ligne de commande complête : + Ligne de commande complète : Executable on device: Exécutable sur le périphérique : + + Run on Boot to Qt Device + Exécuter sur le périphérique Boot to Qt + Remote path not set Chemin distant indéfini @@ -44997,12 +45693,8 @@ Les fichiers affectés sont : Exécutable sur l’hôte : - Run on Boot2Qt Device - Exécuter sur le périphérique Boot2Qt - - - The remote executable must be set in order to run on a Boot2Qt device. - L'exécutable distant doit être défini afin d'être exécuté sur un périphérique Boot2Qt. + The remote executable must be set to run on a Boot to Qt device. + L'exécutable distant doit être défini afin d'être exécuté sur un périphérique Boot to Qt. No device to stop the application on. @@ -45025,12 +45717,16 @@ Les fichiers affectés sont : Arrêter l'application en cours d'exécution - Boot2Qt: %1 - Boot2Qt : %1 + Boot to Qt: %1 + Boot to Qt : %1 QtC::QmakeProjectManager + + Unable to start "%1". + Impossible de démarrer « %1 ». + Qt Widgets Designer is not responding (%1). Qt Widgets Designer ne répond pas (%1). @@ -45039,10 +45735,6 @@ Les fichiers affectés sont : Unable to create server socket: %1 Impossible de créer le socket serveur : %1 - - Unable to start "%1" - Impossible de démarrer « %1 » - Could not load kits in a reasonable amount of time. Impossible de charger les kits dans le temps imparti. @@ -46386,6 +47078,10 @@ connaître une telle URI à l'éditeur QML. == and != perform type coercion, use === or !== to avoid it. == et != provoquent une coercition de type, utilisez === ou !== pour l’éviter. + + JavaScript can break the visual tooling in Qt Design Studio. + JavaScript peut casser les outils visuels dans Qt Design Studio. + Expression statements should be assignments, calls or delete expressions only. Les définitions d’expression devraient être des expression d’assignation, d’appel ou de suppression uniquement. @@ -46450,10 +47146,6 @@ Pour plus d'informations, allez à la documentation « Checking Code S Missing property "%1". Propriété « %1 » manquante. - - Imperative code is not supported in Qt Design Studio. - Le code impératif n'est pas supporté dans Qt Design Studio. - This type (%1) is not supported in Qt Design Studio. Le type (%1) n'est pas supporté dans Qt Design Studio. @@ -46844,18 +47536,6 @@ Veuillez compiler l’application qmldump à partir de la page d’options à pr Qt Creator Qt Creator - - Enable QML Language Server (EXPERIMENTAL!) - Activer le serveur de langage QML (EXPÉRIMENTAL !) - - - Use QML Language Server advanced features (renaming, find usages and co.) (EXPERIMENTAL!) - Utiliser les fonctionnalités avancées du langage de serveur QML (renommage, trouver les utilisations…) (EXPÉRIMENTAL !) - - - Use QML Language Server from latest Qt version - Utiliser le serveur de langage QML de la dernière version de Qt - QML Language Server Serveur de langage QML @@ -46864,6 +47544,26 @@ Veuillez compiler l’application qmldump à partir de la page d’options à pr Use customized static analyzer Utiliser l'analyseur statique personnalisé + + Turn on + Activer + + + Allow versions below Qt %1 + Permettre les versions Qt inférieures à %1 + + + Use advanced features (renaming, find usages, and so on) (experimental) + Utiliser les fonctionnalités avancées (renommage, trouver les utilisations, etc.) (expérimental) + + + Use from latest Qt version + Utiliser la dernière version de Qt + + + Create .qmlls.ini files for new projects + Créer des fichiers .qmlls.ini pour les nouveaux projets + Enabled Activé @@ -48212,12 +48912,12 @@ Qt Design Studio nécessite un projet fondé sur .qmlproject pour ouvrir le fich Définir comme le fichier .ui.qml principal - Failed to find valid build system - Impossible de trouver un système de construction valide + Cannot find a valid build system. + Impossible de trouver un système de compilation valide. - Failed to create valid build directory - Impossible de créer un répertoire de construction valide + Cannot create a valid build directory. + Impossible de créer un répertoire de compilation valide. Command: @@ -48240,13 +48940,21 @@ Qt Design Studio nécessite un projet fondé sur .qmlproject pour ouvrir le fich Vous ne pouvez pas utiliser le kit sélectionné pour prévisualiser les applications Qt pour MCU. - Failed to find valid Qt for MCUs kit - Impossible de trouver un kit Qt pour MCUs valide + Cannot find a valid Qt for MCUs kit. + Impossible de trouver un kit Qt pour MCUs valide. Qt for MCUs Deploy Step Étape de déploiement Qt pour MCUs + + Export Project + Exporter le projet + + + Enable Automatic CMake Generation + Activer la génération automatique de CMake + QtC::Qnx @@ -49367,10 +50075,6 @@ Le processus de contrôle n'a pas pu démarrer. Remote Linux Linux distant - - Failed: %1 - Échoué : %1 - Remote Linux Device Périphérique Linux distant @@ -49383,6 +50087,10 @@ Le processus de contrôle n'a pas pu démarrer. Can't send control signal to the %1 device. The device might have been disconnected. Impossible d'envoyer un signal de contrôle au périphérique %1. Le périphérique est peut-être déconnecté. + + Device "%1" is disconnected. + Le périphérique « %1 » est déconnecté. + Deploy Public Key... Déployer la clé publique… @@ -49420,20 +50128,21 @@ Le processus de contrôle n'a pas pu démarrer. Le binaire « sftp » « %1 » n'existe pas. - Creating directory: %1 + Created directory: "%1". - Création du répertoire : %1 + Le répertoire « %1 » a été créé. - Failed. - Échec. + Copied %1/%2: "%3" -> "%4". + + %1/%2 = progress in the form 4/15, %3 and %4 = source and target file paths + %1 sur %2 copiés : « %3 » -> « %4 ». + - Copying %1/%2: %3 -> %4 - - Copie %1/%2 : %3 -> %4 - + Failed to deploy files. + Échec de déploiement des fichiers. Device is considered unconnected. Re-run device test to reset state. @@ -49679,6 +50388,18 @@ Le processus de contrôle n'a pas pu démarrer. &SSH port: Port &SSH : + + Use SSH port forwarding for debugging + Utiliser le transfert du port SSH pour le débogage + + + Enable debugging on remote targes which cannot expose gdbserver ports. +The ssh tunneling is used to map the remote gdbserver port to localhost. +The local and remote ports are determined automatically. + Active le débogage de cibles distantes qui ne peuvent pas exposer de ports gdbserver. +Le tunnel SSH est utilisé pour faire correspondre le port gdbserveur à la machine locale. +Les ports local et distant sont déterminés automatiquement. + Free ports: Ports libres : @@ -49885,16 +50606,16 @@ Le processus de contrôle n'a pas pu démarrer. La méthode de transfert a été rétrogradée de « %1 » à « %2 ». Si cela est inattendu, veuillez refaire un test du périphérique « %3 ». - rsync failed to start: %1 - Démarrage de rsync échoué : %1 + %1 failed to start: %2 + %1 n'a pas pu démarrer : %2 - rsync crashed. - rsync a planté. + %1 crashed. + %1 a planté. - rsync failed with exit code %1. - rsync échoué avec le code de sortie : %1. + %1 failed with exit code %2. + %1 a échoué avec le code de sortie %2. Deploy files @@ -50206,6 +50927,10 @@ Le processus de contrôle n'a pas pu démarrer. Crop and Trim Rogner et tailler + + Cropping + Rognage + Crop and Trim... Rogner et tailler… @@ -52961,14 +53686,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Word under the current document's text cursor. Mot sous le curseur de texte du document actuel. - - &Undo - Annu&ler - - - &Redo - &Refaire - Select Encoding... Choisir l’encodage… @@ -53029,6 +53746,10 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Ctrl+Ins Ctrl+Ins + + Sort Lines + Trier les lignes + Fold Plier @@ -53137,10 +53858,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Toggle &Fold All Activer/désactiver tout &plier - - Meta+0 - Meta+0 - Go to Block Start with Selection Sélectionner jusqu’au début du bloc @@ -53249,6 +53966,18 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Open Call Hierarchy Ouvrir la hiérarchie d'appel + + Open Type Hierarchy + Ouvrir la hiérarchie de type + + + Meta+Shift+T + Meta+Maj+T + + + Ctrl+Shift+T + Ctrl+Maj+T + Move the View a Page Up and Keep the Cursor Position Déplacer la vue d’une page vers le haut et conserver la position du curseur @@ -53350,8 +54079,20 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Meta+U - &Sort Lines - &Trier les lignes + Go to Previous Word (Camel Case) + Aller au mot précédent (Camel Case) + + + Go to Next Word (Camel Case) + Aller au mot suivant (Camel Case) + + + Go to Previous Word (Camel Case) with Selection + Sélectionner jusqu'au mot précédent (Camel Case) + + + Go to Next Word (Camel Case) with Selection + Sélectionner jusqu'au mot suivant (Camel Case) Ctrl+Shift+Alt+U @@ -53433,14 +54174,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Go to Next Word Aller au mot suivant - - Go to Previous Word Camel Case - Aller au mot en Camel Case précédent - - - Go to Next Word Camel Case - Aller au mot en Camel Case suivant - Go to Line Start with Selection Sélectionner jusqu’au début de ligne @@ -53473,14 +54206,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Go to Next Word with Selection Sélectionner jusqu’au mot suivant - - Go to Previous Word Camel Case with Selection - Sélectionner jusqu’au mot en Camel Case précédent - - - Go to Next Word Camel Case with Selection - Sélectionner jusqu’au mot en Camel Case suivant - <line>:<column> <ligne>:<colonne> @@ -55215,6 +55940,46 @@ Influence l’indentation des lignes de continuation. group:'QML' trigger:'NumberAnimation' avec les cibles + + QuickTest Test Case + group:'QML' trigger:'TestCase' + Cas de test QuickTest + + + GTest Function + group:'C++' trigger:'TEST' + Fonction GTest + + + GTest Fixture + group:'C++' trigger:'TEST_F' + Fixture GTest + + + GTest Parameterized + group:'C++' trigger:'TEST_P' + Test avec paramètres GTest + + + Test Case + group:'C++' trigger:'BOOST_AUTO_TEST_CASE' + Cas de test + + + Test Suite + group:'C++' trigger:'BOOST_AUTO_TEST_SUITE' + Suite de tests + + + Catch Test Case + group:'C++' trigger:'TEST_CASE' + Cas de test Catch + + + Catch Scenario + group:'C++' trigger:'SCENARIO' + Scénario Catch + with target group:'QML' trigger:'NumberAnimation' @@ -55381,6 +56146,18 @@ Influence l’indentation des lignes de continuation. JSON Editor Éditeur JSON + + Type Hierarchy + Hiérarchie de type + + + No type hierarchy available + Aucune hiérarchie de type disponible + + + Reloads the type hierarchy for the symbol under the cursor. + Recharge la hiérarchie de type pour le symbole sous le curseur. + QtC::Todo @@ -56190,6 +56967,10 @@ Les données de la trace sont perdues. createTempFile is not implemented for "%1". createTempFile n'est pas implémenté pour « %1 ». + + watch is not implemented. + L'observation n'est pas implémentée. + Refusing to remove the standard directory "%1". Refus de suppression du répertoire standard « %1 ». @@ -56412,6 +57193,14 @@ Les données de la trace sont perdues. No destination directory set. Aucun répertoire de destination défini. + + Failed to open output file. + Échec lors de l'ouverture du fichier. + + + Failed to write output file. + Échec lors de l'écriture du fichier. + Command failed. Échec de la commande. @@ -56440,8 +57229,8 @@ dans « %2 ». Désactiver - Leave at Default - Laisser par défaut + Default + Défaut Show %1 Column @@ -56463,22 +57252,6 @@ dans « %2 ». Edit Environment Modifier l’environnement - - Enter one environment variable per line. -To set or change a variable, use VARIABLE=VALUE. -To append to a variable, use VARIABLE+=VALUE. -To prepend to 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 "#". - Saisir une variable d’environnement par ligne. -Pour définir ou modifier une variable, utiliser VARIABLE=VALEUR. -Pour ajouter une variable, utiliser VARIABLE+=VALEUR. -Pour ajouter une variable à l’avance, utiliser VARIABLE=+VALUE. -Les variables existantes peuvent être référencées dans une VALEUR avec ${AUTRE}. -Pour effacer une variable, placez son nom sur une ligne sans rien d’autre. -Pour désactiver une variable, préfixer la ligne par « # ». - %1 on %2 File on device @@ -56646,6 +57419,24 @@ Pour désactiver une variable, préfixer la ligne par « # ».Minimize Minimiser + + Enter one environment variable per line. +To set or change a variable, use VARIABLE=VALUE. +To disable a variable, prefix this line with "#". +To append to a variable, use VARIABLE+=VALUE. +To prepend to 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. +Lines starting with "##" will be treated as comments. + Saisissez une variable d'environnement par ligne. +Pour définir ou changer une variable, utilisez VARIABLE=VALEUR. +Pour désactiver une variable, préfixez la ligne avec le caractère « # ». +Pour suffixer une variable, utilisez VARIABLE+=VALEUR. +Pour préfixer une variable, utilisez VARIABLE=+VALEUR. +Les variables existantes peuvent être référencées dans une VALEUR avec ${OTHER}. +Pour effacer une variable, placez son nom sur une ligne avec rien d'autre sur celle-ci. +Les lignes débutant avec « ### » seront traitées comme commentaires. + &OK &OK @@ -56834,6 +57625,10 @@ Pour désactiver une variable, préfixer la ligne par « # ».Could not find any shell. Impossible de trouver un shell. + + No Lua interface set + Aucune interface Lua n'est définie + QtC::Valgrind @@ -58104,10 +58899,6 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon Open "%1" Ouvrir « %1 » - - Clear - Effacer - Running: %1 Exécution de : %1 @@ -58118,7 +58909,7 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon The directory %1 could not be deleted. - Le répertoire %1 ne peut pas être supprimer. + Le répertoire %1 ne peut pas être supprimé. The file %1 could not be deleted. @@ -58921,6 +59712,10 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q Center Horizontally Centrer horizontalement + + Open Linked File + Ouvrir le fichier lié + Align Bottom Aligner en bas @@ -58957,10 +59752,6 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q Equal Vertical Space Espace vertical identique - - Add Related Elements - Ajouter éléments connexes - New Package Nouveau paquet @@ -59037,6 +59828,34 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q [unnamed] [sans nom] + + Reset + Réinitialiser + + + Relations + Relations + + + Diagram Elements + Éléments diagrammes + + + Clear + Effacer + + + View + Vue + + + Filter + Filtre + + + Type: + Type : + Stereotypes: Stéréotypes : @@ -59304,6 +60123,14 @@ Membres : Shape: Forme : + + Warning + Avertissement + + + Error + Erreur + Intermediate points: Points intermédiaires : @@ -59400,6 +60227,30 @@ Membres : Relocate Relation Déplacer relation + + Relation Attributes + Relation d'attributs + + + Type + Type + + + Direction + Direction + + + Stereotypes + Stéréotypes + + + Other Element Attributes + Autres attributs d'élément + + + Number of matching elements: + Nombre d'éléments correspondants : + RadioButtonSpecifics @@ -59670,10 +60521,26 @@ définit dans la taille de pas. Row spacing Espacement des lignes + + Sets the space between the items in pixels in the <b>Row Layout</b>. + Définit l'espacement en pixels entre les éléments de l'<b>agencement en ligne</b>. + Layout direction Direction du layout + + Sets the direction of the item flow in the <b>Row Layout</b>. + Définit la direction du flux des éléments dans l'<b>agencement en ligne</b>. + + + Uniform cell size + Taille de cellules uniforme + + + Toggles all cells to have a uniform size. + Active/désactive une taille commune pour toutes les cellules. + RowSpecifics @@ -59713,16 +60580,20 @@ définit dans la taille de pas. Le nom contient des caractères invalides. - Name must start with a capital letter - Le nom doit commencer par une lettre majuscule + Name must start with a capital letter. + Le nom doit commencer par une lettre majuscule. - Name must have at least 3 characters - Le nom doit contenir au moins trois caractères + Name must have at least 3 characters. + Le nom doit contenir au moins trois caractères. - Name cannot contain white space - Le nom ne peut pas contenir d'espace + Name cannot contain white space. + Le nom ne peut pas contenir d'espace. + + + Name is already taken. + Le nom est déjà pris. Save @@ -59884,6 +60755,18 @@ Elle est utilisée pour calculer la taille totale implicite. Active/désactive la visibilité des icônes, telle que l'icône de caméra ou l'icône des lumières. + + ShowLookAtAction + + Show Look-at + où la caméra pointe/direction + Afficher la direction du regard + + + Toggle the visibility of the edit camera look-at indicator. + Active/désactive l'indicateur pour modifier la direction de la caméra. + + ShowParticleEmitterAction @@ -60324,6 +61207,10 @@ atteint le début ou la fin. Current index Indice actuel + + Sets the index of the child item currently visible in the <b>Stack Layout</b>. + Définit l'index de l'élément enfant actuellement visible dans l'<b>agencement en pile</b>. + StackViewSpecifics @@ -60716,6 +61603,13 @@ atteint le début ou la fin. Dark + + SubComponentManager::parseDirectory + + Invalid meta info + Métadonnées invalides + + SwipeViewSpecifics @@ -61602,18 +62496,18 @@ début ou la fin. - UnimportBundleMaterialDialog + UnimportBundleItemDialog - Bundle material might be in use - Le matériau embarqué est peut-être en cours d'utilisation + Bundle %1 might be in use + Le bundle %1 est peut-être en cours d'utilisation If the %1 you are removing is in use, it might cause the project to malfunction. -Are you sure you want to remove the %1? - Si en cours d'utilisation, la suppression de %1 peut entraîner à un dysfonctionnement du projet. +Are you sure you want to remove it? + Si le bundle %1 que vous souhaitez supprimer est utilisé, cela peut provoquer un dysfonctionnement du projet. -Voulez-vous vraiment supprimer %1 ? +Voulez-vous vraiment le supprimer ? Remove @@ -61737,6 +62631,21 @@ Voulez-vous vraiment supprimer %1 ? Qt Design Studio + + WidgetPluginManager + + Failed to create instance of file "%1": %2 + Impossible de créer une instance à partir du fichier « %1 » : %2 + + + Failed to create instance of file "%1". + Impossible de créer une instance à partir du fichier « %1 ». + + + File "%1" is not a Qt Quick Designer plugin. + Le fichier « %1 » n'est pas un greffon Qt Quick Designer. + + WindowSpecifics diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 23a6ff24129..7aa31822582 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -304,9 +304,9 @@ bool FilePath::equals(const FilePath &first, const FilePath &second, Qt::CaseSen } /*! - * Returns true if the two file paths compare equal case-sensitively. + * Returns \c true if this file path compares equal to \a other case-sensitively. * This is relevant on semi-case sensitive systems like Windows with NTFS. - * @see QTCREATORBUG-30846 + * \sa {https://bugreports.qt.io/browse/QTCREATORBUG-30846}{QTCREATORBUG-30846} */ bool FilePath::equalsCaseSensitive(const FilePath &other) const { diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 6f33e4f5ca4..6893205e4ba 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -362,7 +362,7 @@ void Layout::setContentsMargins(int left, int top, int right, int bottom) } /*! - Attaches the constructed layout to the provided QWidget \a w. + Attaches the constructed layout to the provided QWidget \a widget. This operation can only be performed once per LayoutBuilder instance. */ @@ -373,7 +373,7 @@ void Layout::attachTo(QWidget *widget) } /*! - Adds the layout item \a item as sub items. + Adds the layout item \a item as a sub item. */ void Layout::addItem(I item) { diff --git a/src/libs/utils/macroexpander.cpp b/src/libs/utils/macroexpander.cpp index fc138974745..51a38f4f8c6 100644 --- a/src/libs/utils/macroexpander.cpp +++ b/src/libs/utils/macroexpander.cpp @@ -274,7 +274,10 @@ QString MacroExpander::expand(const QString &stringWithVariables) const FilePath MacroExpander::expand(const FilePath &fileNameWithVariables) const { // We want single variables to expand to fully qualified strings. - return FilePath::fromUserInput(expand(fileNameWithVariables.toString())); + const QString host = expand(fileNameWithVariables.host().toString()); + const QString scheme = expand(fileNameWithVariables.scheme().toString()); + const QString path = expand(fileNameWithVariables.path()); + return FilePath::fromParts(scheme, host, path); } QByteArray MacroExpander::expand(const QByteArray &stringWithVariables) const diff --git a/src/libs/utils/multitextcursor.cpp b/src/libs/utils/multitextcursor.cpp index 7e991d3cd31..a02bfebea53 100644 --- a/src/libs/utils/multitextcursor.cpp +++ b/src/libs/utils/multitextcursor.cpp @@ -239,6 +239,12 @@ void MultiTextCursor::removeSelectedText() mergeCursors(); } +void MultiTextCursor::clearSelection() +{ + for (auto cursor = m_cursorList.begin(); cursor != m_cursorList.end(); ++cursor) + cursor->clearSelection(); +} + static void insertAndSelect(QTextCursor &cursor, const QString &text, bool selectNewText) { if (selectNewText) { @@ -333,7 +339,8 @@ static QTextLine currentTextLine(const QTextCursor &cursor) bool MultiTextCursor::multiCursorEvent( QKeyEvent *e, QKeySequence::StandardKey matchKey, Qt::KeyboardModifiers filterModifiers) { - uint searchkey = (e->modifiers() | e->key()) & ~(filterModifiers | Qt::AltModifier); + filterModifiers |= (Utils::HostOsInfo::isMacHost() ? Qt::KeypadModifier : Qt::AltModifier); + uint searchkey = (e->modifiers() | e->key()) & ~filterModifiers; const QList bindings = QKeySequence::keyBindings(matchKey); return bindings.contains(QKeySequence(searchkey)); diff --git a/src/libs/utils/multitextcursor.h b/src/libs/utils/multitextcursor.h index c1099013095..fb4f307cde7 100644 --- a/src/libs/utils/multitextcursor.h +++ b/src/libs/utils/multitextcursor.h @@ -69,6 +69,7 @@ public: QString selectedText() const; /// removes the selected text of all cursors that have a selection from the document void removeSelectedText(); + void clearSelection(); /// inserts \param text into all cursors, potentially removing correctly selected text void insertText(const QString &text, bool selectNewText = false); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index dac4eb3c8e4..86a5de3854e 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -601,12 +601,21 @@ void installQASIPackage(Target *target, const FilePath &packagePath) } QStringList arguments = AndroidDeviceInfo::adbSelector(deviceSerialNumber); - arguments << "install" << "-r " << packagePath.path(); + arguments << "install" << "-r" << packagePath.path(); QString error; Process *process = startAdbProcess(arguments, &error); if (process) { - // TODO: Potential leak when the process is still running on Creator shutdown. - QObject::connect(process, &Process::done, process, &QObject::deleteLater); + process->setParent(target); + QObject::connect(process, &Process::done, target, [process] { + if (process->result() == ProcessResult::FinishedWithSuccess) { + MessageManager::writeSilently( + Tr::tr("Android package installation finished with success.")); + } else { + MessageManager::writeDisrupting(Tr::tr("Android package installation failed.") + + '\n' + process->cleanedStdErr()); + } + process->deleteLater(); + }); } else { MessageManager::writeDisrupting( Tr::tr("Android package installation failed.\n%1").arg(error)); diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 260bef647f5..904b7c71762 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -54,23 +54,24 @@ AndroidRunner::AndroidRunner(RunControl *runControl, const QString &intentName) const int apiLevel = AndroidManager::deviceApiLevel(m_target); qCDebug(androidRunnerLog) << "Device API:" << apiLevel; - m_worker.reset(new AndroidRunnerWorker(this, m_packageName)); + m_worker = new AndroidRunnerWorker(this, m_packageName); m_worker->setIntentName(intent); m_worker->setIsPreNougat(apiLevel <= 23); m_worker->moveToThread(&m_thread); + QObject::connect(&m_thread, &QThread::finished, m_worker, &QObject::deleteLater); - connect(this, &AndroidRunner::asyncStart, m_worker.data(), &AndroidRunnerWorker::asyncStart); - connect(this, &AndroidRunner::asyncStop, m_worker.data(), &AndroidRunnerWorker::asyncStop); + connect(this, &AndroidRunner::asyncStart, m_worker, &AndroidRunnerWorker::asyncStart); + connect(this, &AndroidRunner::asyncStop, m_worker, &AndroidRunnerWorker::asyncStop); connect(this, &AndroidRunner::androidDeviceInfoChanged, - m_worker.data(), &AndroidRunnerWorker::setAndroidDeviceInfo); - connect(m_worker.data(), &AndroidRunnerWorker::remoteProcessStarted, + m_worker, &AndroidRunnerWorker::setAndroidDeviceInfo); + + connect(m_worker, &AndroidRunnerWorker::remoteProcessStarted, this, &AndroidRunner::handleRemoteProcessStarted); - connect(m_worker.data(), &AndroidRunnerWorker::remoteProcessFinished, + connect(m_worker, &AndroidRunnerWorker::remoteProcessFinished, this, &AndroidRunner::handleRemoteProcessFinished); - connect(m_worker.data(), &AndroidRunnerWorker::remoteOutput, - this, &AndroidRunner::remoteOutput); - connect(m_worker.data(), &AndroidRunnerWorker::remoteErrorOutput, + connect(m_worker, &AndroidRunnerWorker::remoteOutput, this, &AndroidRunner::remoteOutput); + connect(m_worker, &AndroidRunnerWorker::remoteErrorOutput, this, &AndroidRunner::remoteErrorOutput); connect(&m_outputParser, &QmlDebug::QmlOutputParser::waitingForConnectionOnPort, diff --git a/src/plugins/android/androidrunner.h b/src/plugins/android/androidrunner.h index 6b15d8fff44..856ad314c1c 100644 --- a/src/plugins/android/androidrunner.h +++ b/src/plugins/android/androidrunner.h @@ -56,7 +56,7 @@ private: QString m_launchedAVDName; QThread m_thread; QTimer m_checkAVDTimer; - QScopedPointer m_worker; + AndroidRunnerWorker *m_worker = nullptr; QPointer m_target; Utils::Port m_debugServerPort; QUrl m_qmlServer; diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 9befaba742a..a764167f365 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -171,24 +171,26 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa m_extraAppParams = runControl->commandLine().arguments(); if (const Store sd = runControl->settingsData(Constants::ANDROID_AM_START_ARGS); - !sd.values().isEmpty()) { + !sd.isEmpty()) { QTC_CHECK(sd.first().typeId() == QMetaType::QString); const QString startArgs = sd.first().toString(); m_amStartExtraArgs = ProcessArgs::splitArgs(startArgs, OsTypeOtherUnix); } if (const Store sd = runControl->settingsData(Constants::ANDROID_PRESTARTSHELLCMDLIST); - !sd.values().isEmpty()) { - QTC_CHECK(sd.first().typeId() == QMetaType::QString); - const QStringList commands = sd.first().toString().split('\n', Qt::SkipEmptyParts); + !sd.isEmpty()) { + const QVariant &first = sd.first(); + QTC_CHECK(first.typeId() == QMetaType::QStringList); + const QStringList commands = first.toStringList(); for (const QString &shellCmd : commands) m_beforeStartAdbCommands.append(QString("shell %1").arg(shellCmd)); } if (const Store sd = runControl->settingsData(Constants::ANDROID_POSTFINISHSHELLCMDLIST); - !sd.values().isEmpty()) { - QTC_CHECK(sd.first().typeId() == QMetaType::QString); - const QStringList commands = sd.first().toString().split('\n', Qt::SkipEmptyParts); + !sd.isEmpty()) { + const QVariant &first = sd.first(); + QTC_CHECK(first.typeId() == QMetaType::QStringList); + const QStringList commands = first.toStringList(); for (const QString &shellCmd : commands) m_afterFinishAdbCommands.append(QString("shell %1").arg(shellCmd)); } @@ -203,6 +205,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); m_useAppParamsForQmlDebugger = version->qtVersion() >= QVersionNumber(5, 12); + m_pidRunner.setParent(this); // Move m_pidRunner object together with *this into a separate thread. } AndroidRunnerWorker::~AndroidRunnerWorker() diff --git a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp index 2b52ee4d143..50de3ede0af 100644 --- a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp +++ b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp @@ -259,7 +259,7 @@ void handleInactiveRegions(LanguageClient::Client *client, const JsonRpcMessage const QList inactiveRegions = params->inactiveRegions(); QList ifdefedOutBlocks; for (const Range &r : inactiveRegions) { - const int startPos = r.start().toPositionInDocument(doc->document()); + const int startPos = Position(r.start().line(), 0).toPositionInDocument(doc->document()); const int endPos = r.end().toPositionInDocument(doc->document()) + 1; ifdefedOutBlocks.emplaceBack(startPos, endPos); } diff --git a/src/plugins/clangformat/CMakeLists.txt b/src/plugins/clangformat/CMakeLists.txt index 30bc50dd2c3..6873e690a14 100644 --- a/src/plugins/clangformat/CMakeLists.txt +++ b/src/plugins/clangformat/CMakeLists.txt @@ -37,3 +37,8 @@ extend_qtc_plugin(ClangFormat DEFINES TESTDATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/data" ) + +extend_qtc_plugin(ClangFormat + CONDITION TARGET LLVM + DEPENDS LLVM +) diff --git a/src/plugins/clangtools/clangtoolsplugin.cpp b/src/plugins/clangtools/clangtoolsplugin.cpp index d0cea985b51..a53987c3d87 100644 --- a/src/plugins/clangtools/clangtoolsplugin.cpp +++ b/src/plugins/clangtools/clangtoolsplugin.cpp @@ -177,10 +177,11 @@ void ClangToolsPlugin::registerAnalyzeActions() widget->toolBar()->addWidget(button); const auto toolsMenu = new QMenu(widget); button->setMenu(toolsMenu); - for (const auto &toolInfo : {std::make_pair(ClangTidyTool::instance(), - Constants::RUN_CLANGTIDY_ON_CURRENT_FILE), - std::make_pair(ClazyTool::instance(), - Constants::RUN_CLAZY_ON_CURRENT_FILE)}) { + for (const auto &toolInfo : + {std::pair( + ClangTidyTool::instance(), Constants::RUN_CLANGTIDY_ON_CURRENT_FILE), + std::pair( + ClazyTool::instance(), Constants::RUN_CLAZY_ON_CURRENT_FILE)}) { ClangTool * const tool = toolInfo.first; Command * const cmd = ActionManager::command(toolInfo.second); QAction *const action = toolsMenu->addAction(tool->name(), [editor, tool] { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index aacd273f63e..1e0c4594ceb 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -226,7 +226,8 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) : useStaging.setSettingsKey(USE_STAGING_KEY); useStaging.setLabel(Tr::tr("Stage for installation"), BoolAspect::LabelPlacement::AtCheckBox); - useStaging.setDefaultValue(supportsStageForInstallation(kit())); + useStaging.setDefaultValue(supportsStageForInstallation(kit()) && !isCleanStep()); + useStaging.setEnabled(!isCleanStep()); stagingDir.setSettingsKey(STAGING_DIR_KEY); stagingDir.setLabelText(Tr::tr("Staging directory:")); @@ -522,6 +523,11 @@ void CMakeBuildStep::setBuildPreset(const QString &preset) QWidget *CMakeBuildStep::createConfigWidget() { auto updateDetails = [this] { + const bool haveCleanTarget = m_buildTargets.contains(cleanTarget()); + useStaging.setEnabled(!haveCleanTarget); + if (useStaging() && haveCleanTarget) + useStaging.setValue(false); + ProcessParameters param; setupProcessParameters(¶m); param.setCommandLine(cmakeCommand()); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 8a65c45b7f9..4db4b78a09b 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1239,6 +1239,7 @@ void CMakeBuildSystem::clearCMakeCache() path.removeRecursively(); emit configurationCleared(); + emitParsingFinished(false); } void CMakeBuildSystem::combineScanAndParse(bool restoredFromBackup) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 69511b0fc07..ede77f38a46 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -46,6 +46,19 @@ namespace CMakeProjectManager::Internal { static Q_LOGGING_CATEGORY(cmInputLog, "qtc.cmake.import", QtWarningMsg); +class ToolchainDescriptionEx +{ +public: + Utils::FilePath compilerPath; + Utils::Id language; + QString originalTargetTriple; + + operator ProjectExplorer::ToolchainDescription() const + { + return ProjectExplorer::ToolchainDescription{compilerPath, language}; + } +}; + struct DirectoryData { // Project Stuff: @@ -64,7 +77,7 @@ struct DirectoryData QString toolset; FilePath sysroot; QtProjectImporter::QtVersionData qt; - QVector toolchains; + QVector toolchains; QVariant debugger; }; @@ -321,12 +334,30 @@ static CMakeConfig configurationFromPresetProbe( const PresetsDetails::ConfigurePreset &configurePreset) { const FilePath cmakeListTxt = importPath / Constants::CMAKE_LISTS_TXT; - cmakeListTxt.writeFileContents(QByteArray("cmake_minimum_required(VERSION 3.15)\n" - "\n" - "project(preset-probe)\n" - "set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\" CACHE FILEPATH \"\" FORCE)\n" - "set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\" CACHE FILEPATH \"\" FORCE)\n" - "\n")); + cmakeListTxt.writeFileContents(QByteArray(R"( + cmake_minimum_required(VERSION 3.15) + + project(preset-probe) + + foreach (file_path_value + CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_SYSROOT QT_HOST_PATH CMAKE_MAKE_PROGRAM) + if (${file_path_value}) + set(${file_path_value} "${${file_path_value}}" CACHE FILEPATH "" FORCE) + endif() + endforeach() + + foreach (path_value CMAKE_PREFIX_PATH CMAKE_FIND_ROOT_PATH) + if (${path_value}) + set(${path_value} "${${path_value}}" CACHE PATH "" FORCE) + endif() + endforeach() + + foreach (string_value CMAKE_C_COMPILER_TARGET CMAKE_CXX_COMPILER_TARGET) + if (${string_value}) + set(${string_value} "${${string_value}}" CACHE STRING "" FORCE) + endif() + endforeach() + )")); Process cmake; cmake.setDisableUnixTerminal(); @@ -574,9 +605,9 @@ static QMakeAndCMakePrefixPath qtInfoFromCMakeCache(const CMakeConfig &config, return {qmakeLocation, resultedPrefixPath}; } -static QVector extractToolchainsFromCache(const CMakeConfig &config) +static QVector extractToolchainsFromCache(const CMakeConfig &config) { - QVector result; + QVector result; bool haveCCxxCompiler = false; for (const CMakeConfigItem &i : config) { if (!i.key.startsWith("CMAKE_") || !i.key.endsWith("_COMPILER")) @@ -593,7 +624,10 @@ static QVector extractToolchainsFromCache(const CMakeConfi } else languageId = Id::fromName(language); - result.append({FilePath::fromUtf8(i.value), languageId}); + result.append( + {FilePath::fromUtf8(i.value), + languageId, + config.stringValueOf("CMAKE_" + language + "_COMPILER_TARGET")}); } if (!haveCCxxCompiler) { @@ -612,10 +646,14 @@ static QVector extractToolchainsFromCache(const CMakeConfi const FilePath linker = config.filePathValueOf("CMAKE_LINKER"); if (!linker.isEmpty()) { const FilePath compilerPath = linker.parentDir(); - result.append({compilerPath.pathAppended(cCompilerName), - ProjectExplorer::Constants::C_LANGUAGE_ID}); - result.append({compilerPath.pathAppended(cxxCompilerName), - ProjectExplorer::Constants::CXX_LANGUAGE_ID}); + result.append( + {compilerPath.pathAppended(cCompilerName), + ProjectExplorer::Constants::C_LANGUAGE_ID, + {}}); + result.append( + {compilerPath.pathAppended(cxxCompilerName), + ProjectExplorer::Constants::CXX_LANGUAGE_ID, + {}}); } } } @@ -1052,7 +1090,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const const bool compilersMatch = [k, data] { const QList allLanguages = ToolchainManager::allLanguages(); - for (const ToolchainDescription &tcd : data->toolchains) { + for (const ToolchainDescriptionEx &tcd : data->toolchains) { if (!Utils::contains(allLanguages, [&tcd](const Id &language) { return language == tcd.language; })) continue; @@ -1065,7 +1103,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const }(); const bool noCompilers = [k, data] { const QList allLanguages = ToolchainManager::allLanguages(); - for (const ToolchainDescription &tcd : data->toolchains) { + for (const ToolchainDescriptionEx &tcd : data->toolchains) { if (!Utils::contains(allLanguages, [&tcd](const Id &language) { return language == tcd.language; })) continue; @@ -1117,7 +1155,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const SysRootKitAspect::setSysRoot(k, data->sysroot); - for (const ToolchainDescription &cmtcd : data->toolchains) { + for (const ToolchainDescriptionEx &cmtcd : data->toolchains) { const ToolchainData tcd = findOrCreateToolchains(cmtcd); QTC_ASSERT(!tcd.tcs.isEmpty(), continue); @@ -1126,7 +1164,15 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const addTemporaryData(ToolchainKitAspect::id(), tc->id(), k); } - ToolchainKitAspect::setToolchain(k, tcd.tcs.at(0)); + Toolchain* toolchain = tcd.tcs.at(0); + if (!cmtcd.originalTargetTriple.isEmpty()) + toolchain->setExplicitCodeModelTargetTriple(cmtcd.originalTargetTriple); + + // Mark CMake presets toolchains as manual + if (!data->cmakePresetDisplayname.isEmpty() && tcd.areTemporary) + toolchain->setDetection(Toolchain::ManualDetection); + + ToolchainKitAspect::setToolchain(k, toolchain); } if (!data->cmakePresetDisplayname.isEmpty()) { @@ -1335,7 +1381,7 @@ void CMakeProjectImporterTest::testCMakeProjectImporterToolchain() config.append(CMakeConfigItem(key.toUtf8(), value.toUtf8())); } - const QVector tcs = extractToolchainsFromCache(config); + const QVector tcs = extractToolchainsFromCache(config); QCOMPARE(tcs.count(), expectedLanguages.count()); for (int i = 0; i < tcs.count(); ++i) { QCOMPARE(tcs.at(i).language, expectedLanguages.at(i)); diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 172b54570e1..519d0ff954c 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -20,11 +20,14 @@ #include #include -#include +#include #include +#include using namespace Utils; +Q_LOGGING_CATEGORY(openEditorsLog, "qtc.core.openeditorswindow", QtWarningMsg); + namespace Core::Internal { class OpenEditorsItem : public TreeItem @@ -196,9 +199,13 @@ bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e) } else if (e->type() == QEvent::KeyRelease) { auto ke = static_cast(e); + qCDebug(openEditorsLog()) << ke; if (ke->modifiers() == 0 - /*HACK this is to overcome some event inconsistencies between platforms*/ - || (ke->modifiers() == Qt::AltModifier + /* On some platforms, the key event can claim both that Ctrl is released and that + Ctrl is still pressed, see QTCREATORBUG-31228 */ + || (ke->modifiers() == Qt::ControlModifier && ke->key() == Qt::Key_Control) + /*HACK this is to overcome some event inconsistencies between platforms*/ + || (ke->modifiers() == Qt::AltModifier && (ke->key() == Qt::Key_Alt || ke->key() == -1))) { selectAndHide(); } diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 2c8bbea1cfd..09a36cbf76d 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -852,7 +852,7 @@ QList ICore::currentContextObjects() Returns the widget of the top level IContext of the current context, or \c nullptr if there is none. - \sa currentContextObject() + \sa currentContextObjects() */ QWidget *ICore::currentContextWidget() { @@ -2311,7 +2311,7 @@ QList ICore::contextObjects(QWidget *widget) \sa removeContextObject() \sa updateAdditionalContexts() - \sa currentContextObject() + \sa currentContextObjects() \sa {The Action Manager and Commands} */ @@ -2330,7 +2330,7 @@ void ICore::addContextObject(IContext *context) \sa addContextObject() \sa updateAdditionalContexts() - \sa currentContextObject() + \sa currentContextObjects() */ void ICore::removeContextObject(IContext *context) diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index 4183a8457ca..66fbbf6d076 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -10,9 +10,11 @@ #include "editormanager/editormanager.h" #include "find/basetextfind.h" #include "icore.h" +#include "messagemanager.h" #include +#include #include #include @@ -294,7 +296,16 @@ void OutputWindow::contextMenuEvent(QContextMenuEvent *event) menu->addSeparator(); QAction *saveAction = menu->addAction(Tr::tr("Save Contents...")); connect(saveAction, &QAction::triggered, this, [this] { - QFileDialog::saveFileContent(toPlainText().toUtf8(), d->outputFileNameHint); + const FilePath file = FileUtils::getSaveFilePath( + ICore::dialogParent(), {}, FileUtils::homePath() / d->outputFileNameHint); + if (!file.isEmpty()) { + QString error; + Utils::TextFileFormat format; + format.codec = EditorManager::defaultTextCodec(); + format.lineTerminationMode = EditorManager::defaultLineEnding(); + if (!format.writeFile(file, toPlainText(), &error)) + MessageManager::writeDisrupting(error); + } }); saveAction->setEnabled(!document()->isEmpty()); diff --git a/src/plugins/debugger/debuggeritem.cpp b/src/plugins/debugger/debuggeritem.cpp index 9cd855c148e..120684c9fe4 100644 --- a/src/plugins/debugger/debuggeritem.cpp +++ b/src/plugins/debugger/debuggeritem.cpp @@ -146,6 +146,7 @@ void DebuggerItem::reinitializeFromFile(QString *error, Utils::Environment *cust } Environment env = customEnv ? *customEnv : m_command.deviceEnvironment(); + DebuggerItem::addAndroidLldbPythonEnv(m_command, env); // QNX gdb unconditionally checks whether the QNX_TARGET env variable is // set and bails otherwise, even when it is not used by the specific diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 007d3464bb8..f4f1405953e 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -575,9 +575,11 @@ void DebuggerRunTool::start() connect(engine, &DebuggerEngine::attachToCoreRequested, this, [this](const QString &coreFile) { auto rc = new RunControl(ProjectExplorer::Constants::DEBUG_RUN_MODE); rc->copyDataFromRunControl(runControl()); + rc->resetDataForAttachToCore(); auto name = QString(Tr::tr("%1 - Snapshot %2").arg(runControl()->displayName()).arg(++d->snapshotCounter)); auto debugger = new DebuggerRunTool(rc); debugger->setStartMode(AttachToCore); + debugger->setCloseMode(DetachAtClose); debugger->setRunControlName(name); debugger->setCoreFilePath(FilePath::fromString(coreFile), true); debugger->startRunControl(); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index 421d0efa94c..b5b7be2f980 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -647,6 +647,7 @@ public: void positionShow(const TextEditorWidget *editorWidget); void updateTooltip(DebuggerEngine *engine); + void updateTooltip2(DebuggerEngine *engine); void setState(DebuggerTooltipState newState); void destroy(); @@ -782,6 +783,11 @@ DebuggerToolTipHolder::DebuggerToolTipHolder(const DebuggerToolTipContext &conte // after normal WatchModel update. void DebuggerToolTipHolder::updateTooltip(DebuggerEngine *engine) +{ + QTimer::singleShot(0, [this, engine] { updateTooltip2(engine); }); +} + +void DebuggerToolTipHolder::updateTooltip2(DebuggerEngine *engine) { widget->setEngine(engine); diff --git a/src/plugins/extensionmanager/extensionmanagerwidget.cpp b/src/plugins/extensionmanager/extensionmanagerwidget.cpp index 429d9a241f3..9ce803e6f02 100644 --- a/src/plugins/extensionmanager/extensionmanagerwidget.cpp +++ b/src/plugins/extensionmanager/extensionmanagerwidget.cpp @@ -279,6 +279,8 @@ public: } }); + connect(ExtensionSystem::PluginManager::instance(), + &ExtensionSystem::PluginManager::pluginsChanged, this, &PluginStatusWidget::update); connect(m_restartButton, &QAbstractButton::clicked, ICore::instance(), &ICore::restart, Qt::QueuedConnection); @@ -423,6 +425,7 @@ ExtensionManagerWidget::ExtensionManagerWidget() m_linksTitle = sectionTitle(h6CapitalTF, Tr::tr("More information")); m_links = tfLabel(contentTF, false); m_links->setOpenExternalLinks(true); + m_links->setTextInteractionFlags(Qt::TextBrowserInteraction); m_imageTitle = sectionTitle(h6CapitalTF, {}); m_image = new QLabel; m_imageMovie.setDevice(&m_imageDataBuffer); diff --git a/src/plugins/haskell/haskell.qbs b/src/plugins/haskell/haskell.qbs index d1362f32b11..589d8004401 100644 --- a/src/plugins/haskell/haskell.qbs +++ b/src/plugins/haskell/haskell.qbs @@ -25,4 +25,17 @@ QtcPlugin { "haskelltokenizer.cpp", "haskelltokenizer.h", "stackbuildstep.cpp", "stackbuildstep.h" ] + + Qt.core.resourceFileBaseName: "HaskellWizards" // avoid conflicting qrc file + Group { + name: "Wizard files" + Qt.core.resourceSourceBase: sourceDirectory + Qt.core.resourcePrefix: "haskell/" + fileTags: "qt.core.resource_data" + prefix: "share/wizards/" + files: [ + "module/file.hs", + "module/wizard.json", + ] + } } diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index 420e119e741..0626a552533 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -992,12 +992,12 @@ IosToolTaskAdapter::IosToolTaskAdapter() {} void IosToolTaskAdapter::start() { - task()->m_iosToolHandler = new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType)); - connect(task()->m_iosToolHandler, &IosToolHandler::finished, this, [this] { - task()->m_iosToolHandler->deleteLater(); + task()->m_iosToolHandler.reset(new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType))); + connect(task()->m_iosToolHandler.get(), &IosToolHandler::finished, this, [this] { + task()->m_iosToolHandler.release()->deleteLater(); emit done(Tasking::DoneResult::Success); }); - task()->m_startHandler(task()->m_iosToolHandler); + task()->m_startHandler(task()->m_iosToolHandler.get()); } } // namespace Ios diff --git a/src/plugins/ios/iostoolhandler.h b/src/plugins/ios/iostoolhandler.h index 33d413e3cfc..3f81fded81d 100644 --- a/src/plugins/ios/iostoolhandler.h +++ b/src/plugins/ios/iostoolhandler.h @@ -82,7 +82,7 @@ public: private: friend class IosToolTaskAdapter; - IosToolHandler *m_iosToolHandler = nullptr; + std::unique_ptr m_iosToolHandler; StartHandler m_startHandler; Internal::IosDeviceType m_deviceType = Internal::IosDeviceType::IosDevice; }; diff --git a/src/plugins/lua/lua.qbs b/src/plugins/lua/lua.qbs index f9689e208f2..9c21feff048 100644 --- a/src/plugins/lua/lua.qbs +++ b/src/plugins/lua/lua.qbs @@ -9,6 +9,11 @@ QtcPlugin { Depends { name: "lua546" } Depends { name: "sol2" } + Properties { + condition: qbs.toolchain.contains("mingw") + cpp.optimization: "fast" + } + files: [ // "generateqtbindings.cpp", // use this if you need to generate some code "lua_global.h", diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index 3d489460247..29c84aece93 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -399,6 +399,11 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) && thisWorkingDirectory == tab.runControl->workingDirectory() && thisEnvironment == tab.runControl->environment(); }); + const auto updateOutputFileName = [this](int index, RunControl *rc) { + qobject_cast(m_tabWidget->widget(index)) + //: file name suggested for saving application output, %1 = run configuration display name + ->setOutputFileNameHint(Tr::tr("application-output-%1.txt").arg(rc->displayName())); + }; if (tab != m_runControlTabs.end()) { // Reuse this tab if (tab->runControl) @@ -414,6 +419,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) const int tabIndex = m_tabWidget->indexOf(tab->window); QTC_ASSERT(tabIndex != -1, return); m_tabWidget->setTabText(tabIndex, rc->displayName()); + updateOutputFileName(tabIndex, rc); tab->window->scrollToBottom(); qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Reusing tab" @@ -429,8 +435,6 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) ow->setWindowIcon(Icons::WINDOW.icon()); ow->setWordWrapEnabled(m_settings.wrapOutput); ow->setMaxCharCount(m_settings.maxCharCount); - //: file name suggested for saving application output, %1 = run configuration display name - ow->setOutputFileNameHint(Tr::tr("application-output-%1.txt").arg(rc->displayName())); auto updateFontSettings = [ow] { ow->setBaseFont(TextEditor::TextEditorSettings::fontSettings().font()); @@ -456,6 +460,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) m_runControlTabs.push_back(RunControlTab(rc, ow)); m_tabWidget->addTab(ow, rc->displayName()); + updateOutputFileName(m_tabWidget->count() - 1, rc); qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Adding tab for" << rc; updateCloseActions(); setFilteringEnabled(m_tabWidget->count() > 0); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp index 9c55d5345c4..d3d747c1a89 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp @@ -85,7 +85,7 @@ static QString translatedOrUntranslatedText(QVariantMap &map, const QString &key { if (key.size() >= 1) { const QString trKey = "tr" + key.at(0).toUpper() + key.mid(1); // "text" -> "trText" - const QString trValue = JsonWizardFactory::localizedString(consumeValue(map, trKey).toString()); + const QString trValue = JsonWizardFactory::localizedString(consumeValue(map, trKey)); if (!trValue.isEmpty()) return trValue; } @@ -188,9 +188,10 @@ JsonFieldPage::Field *JsonFieldPage::Field::parse(const QVariant &input, QString *errorMessage = Tr::tr("Field \"%1\" has unsupported type \"%2\".").arg(name).arg(type); return nullptr; } - data->setTexts(name, - JsonWizardFactory::localizedString(consumeValue(tmp, DISPLAY_NAME_KEY).toString()), - JsonWizardFactory::localizedString(consumeValue(tmp, TOOLTIP_KEY).toString())); + data->setTexts( + name, + JsonWizardFactory::localizedString(consumeValue(tmp, DISPLAY_NAME_KEY)), + JsonWizardFactory::localizedString(consumeValue(tmp, TOOLTIP_KEY))); data->setVisibleExpression(consumeValue(tmp, VISIBLE_KEY, true)); data->setEnabledExpression(consumeValue(tmp, ENABLED_KEY, true)); @@ -837,6 +838,7 @@ void PathChooserField::setup(JsonFieldPage *page, const QString &name) QTC_ASSERT(w, return); page->registerFieldWithName(name, w, "path", SIGNAL(textChanged(QString))); QObject::connect(w, &PathChooser::textChanged, page, &WizardPage::completeChanged); + QObject::connect(w, &PathChooser::validChanged, page, &WizardPage::completeChanged); } bool PathChooserField::validate(MacroExpander *expander, QString *message) @@ -973,7 +975,7 @@ std::unique_ptr createStandardItemFromListItem(const QVariant &it auto standardItem = std::make_unique(); if (item.typeId() == QMetaType::QVariantMap) { QVariantMap tmp = item.toMap(); - const QString key = JsonWizardFactory::localizedString(consumeValue(tmp, "trKey", QString()).toString()); + const QString key = JsonWizardFactory::localizedString(consumeValue(tmp, "trKey")); const QVariant value = consumeValue(tmp, "value", key); if (key.isNull() || key.isEmpty()) { @@ -984,7 +986,7 @@ std::unique_ptr createStandardItemFromListItem(const QVariant &it standardItem->setData(value, ListField::ValueRole); standardItem->setData(consumeValue(tmp, "condition", true), ListField::ConditionRole); standardItem->setData(consumeValue(tmp, "icon"), ListField::IconStringRole); - standardItem->setToolTip(JsonWizardFactory::localizedString(consumeValue(tmp, "trToolTip", QString()).toString())); + standardItem->setToolTip(JsonWizardFactory::localizedString(consumeValue(tmp, "trToolTip"))); warnAboutUnsupportedKeys(tmp, QString(), "List"); } else { const QString keyvalue = item.toString(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index 6da06b0616a..4870056c9bf 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -763,10 +763,9 @@ QString JsonWizardFactory::localizedString(const QVariant &value) return {}; if (value.typeId() == QMetaType::QVariantMap) { QVariantMap tmp = value.toMap(); - const QString locale = languageSetting().toLower(); - QStringList locales; - locales << locale << QLatin1String("en") << QLatin1String("C") << tmp.keys(); - for (const QString &locale : std::as_const(locales)) { + const QString currentLocale = languageSetting().toLower(); + const QStringList locales{currentLocale, "en", "C"}; + for (const QString &locale : locales) { QString result = tmp.value(locale, QString()).toString(); if (!result.isEmpty()) return result; diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 5eac3498bcf..4dd364aaf0a 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -364,6 +364,12 @@ void RunControl::copyDataFromRunControl(RunControl *runControl) d->copyData(runControl->d.get()); } +void RunControl::resetDataForAttachToCore() +{ + d->m_workers.clear(); + d->state = RunControlState::Initialized; +} + void RunControl::copyDataFromRunConfiguration(RunConfiguration *runConfig) { QTC_ASSERT(runConfig, return); diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index 94288664361..b99439869ac 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -150,6 +150,7 @@ public: void copyDataFromRunConfiguration(RunConfiguration *runConfig); void copyDataFromRunControl(RunControl *runControl); + void resetDataForAttachToCore(); void setAutoDeleteOnStop(bool autoDelete); diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp index 2e52b3358ba..254cfd0bea3 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -48,10 +48,7 @@ const char TEXTEDITOR_CONTEXT_ID[] = "QmlDesigner.TextEditorContext"; TextEditorView::TextEditorView(ExternalDependenciesInterface &externalDependencies) : AbstractView{externalDependencies} , m_widget(new TextEditorWidget(this)) - , m_textEditorContext(new Internal::TextEditorContext(m_widget)) { - Core::ICore::addContextObject(m_textEditorContext); - Core::Context context(TEXTEDITOR_CONTEXT_ID); /* @@ -87,7 +84,11 @@ void TextEditorView::modelAttached(Model *model) // Set the context of the text editor, but we add another special context to override shortcuts. Core::Context context = textEditor->context(); context.prepend(TEXTEDITOR_CONTEXT_ID); + + m_textEditorContext = new Internal::TextEditorContext(m_widget); + m_textEditorContext->setWidget(textEditor->widget()); // toplevel focus widget of the editor m_textEditorContext->setContext(context); + Core::ICore::addContextObject(m_textEditorContext); m_widget->setTextEditor(std::move(textEditor)); } diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.h b/src/plugins/qmldesigner/components/texteditor/texteditorview.h index 33a5ec8276c..35a33863fab 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.h +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.h @@ -85,7 +85,7 @@ public: private: QPointer m_widget; - Internal::TextEditorContext *m_textEditorContext; + Internal::TextEditorContext *m_textEditorContext = nullptr; bool m_errorState = false; }; diff --git a/src/plugins/qmldesigner/designmodecontext.cpp b/src/plugins/qmldesigner/designmodecontext.cpp index 796261935af..2d73a01839b 100644 --- a/src/plugins/qmldesigner/designmodecontext.cpp +++ b/src/plugins/qmldesigner/designmodecontext.cpp @@ -85,16 +85,16 @@ void NavigatorContext::contextHelp(const HelpCallback &callback) const qobject_cast(m_widget)->contextHelp(callback); } -TextEditorContext::TextEditorContext(QWidget *widget) - : IContext(widget) +TextEditorContext::TextEditorContext(TextEditorWidget *parent) + : IContext(parent) + , m_parent(parent) { - setWidget(widget); setContext(Core::Context(Constants::C_QMLTEXTEDITOR, Constants::C_QT_QUICK_TOOLS_MENU)); } void TextEditorContext::contextHelp(const HelpCallback &callback) const { - qobject_cast(m_widget)->contextHelp(callback); + m_parent->contextHelp(callback); } } // namespace QmlDesigner::Internal diff --git a/src/plugins/qmldesigner/designmodecontext.h b/src/plugins/qmldesigner/designmodecontext.h index 1d146deb7d8..1ad7dded453 100644 --- a/src/plugins/qmldesigner/designmodecontext.h +++ b/src/plugins/qmldesigner/designmodecontext.h @@ -6,6 +6,9 @@ #include namespace QmlDesigner { + +class TextEditorWidget; + namespace Internal { /** @@ -70,8 +73,11 @@ class TextEditorContext : public Core::IContext Q_OBJECT public: - TextEditorContext(QWidget *widget); + TextEditorContext(TextEditorWidget *parent); void contextHelp(const Core::IContext::HelpCallback &callback) const override; + +private: + TextEditorWidget *m_parent = nullptr; }; } // namespace Internal } // namespace QmlDesigner diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp index c0e16b12887..3aa83bfe5b7 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp @@ -45,7 +45,7 @@ const char CUSTOM_COMMAND[] = "QmlJSEditor.useCustomFormatCommand"; const char CUSTOM_ANALYZER[] = "QmlJSEditor.useCustomAnalyzer"; const char DISABLED_MESSAGES[] = "QmlJSEditor.disabledMessages"; const char DISABLED_MESSAGES_NONQUICKUI[] = "QmlJSEditor.disabledMessagesNonQuickUI"; -const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_BINS}/qmlformat"; +const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_BINS}/qmlformat%{HostOs:ExecutableSuffix}"; using namespace QmlJSEditor::Internal; using namespace Utils; diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp index 44c45f56dd3..ee8fea0a41c 100644 --- a/src/plugins/qmljseditor/qmljseditordocument.cpp +++ b/src/plugins/qmljseditor/qmljseditordocument.cpp @@ -481,6 +481,10 @@ QmlJSEditorDocumentPrivate::QmlJSEditorDocumentPrivate(QmlJSEditorDocument *pare &QmllsSettingsManager::settingsChanged, this, &Internal::QmlJSEditorDocumentPrivate::settingsChanged); + connect(modelManager, + &ModelManagerInterface::projectInfoUpdated, + this, + &Internal::QmlJSEditorDocumentPrivate::settingsChanged); // semantic info m_semanticInfoUpdater = new SemanticInfoUpdater(); @@ -751,7 +755,7 @@ static Utils::FilePath qmllsForFile(const Utils::FilePath &file, && QVersionNumber::fromString(pInfo.qtVersionString) < settings.mininumQmllsVersion) { return {}; } - return pInfo.qmllsPath; + return pInfo.qmllsPath.exists() ? pInfo.qmllsPath : Utils::FilePath(); } void QmlJSEditorDocumentPrivate::settingsChanged() @@ -766,7 +770,7 @@ void QmlJSEditorDocumentPrivate::settingsChanged() auto lspClientManager = LanguageClient::LanguageClientManager::instance(); if (newQmlls.isEmpty()) { qCDebug(qmllsLog) << "disabling qmlls for" << q->filePath(); - if (LanguageClient::Client *client = lspClientManager->clientForDocument(q)) { + if (lspClientManager->clientForDocument(q)) { qCDebug(qmllsLog) << "deactivating " << q->filePath() << "in qmlls" << newQmlls; lspClientManager->openDocumentWithClient(q, nullptr); } else diff --git a/src/plugins/studiowelcome/qdsnewdialog.cpp b/src/plugins/studiowelcome/qdsnewdialog.cpp index 671670f609f..54dec46f74f 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.cpp +++ b/src/plugins/studiowelcome/qdsnewdialog.cpp @@ -49,7 +49,7 @@ QString uniqueProjectName(const QString &path) /***********************/ QdsNewDialog::QdsNewDialog(QWidget *parent) - : m_dialog{new QQuickWidget(parent)} + : m_dialog{Utils::makeUniqueObjectPtr(parent)} , m_categoryModel{new PresetCategoryModel(&m_presetData, this)} , m_presetModel{new PresetModel(&m_presetData, this)} , m_screenSizeModel{new ScreenSizeModel(this)} @@ -57,7 +57,7 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) , m_recentsStore{"RecentPresets.json", StorePolicy::UniqueValues} , m_userPresetsStore{"UserPresets.json", StorePolicy::UniqueNames} { - setParent(m_dialog); + connect(m_dialog.get(), &QObject::destroyed, this, &QObject::deleteLater); m_recentsStore.setReverseOrder(); m_recentsStore.setMaximum(10); @@ -89,9 +89,10 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) m_dialog->installEventFilter(this); QObject::connect(&m_wizard, &WizardHandler::wizardCreationFailed, this, [this] { - QMessageBox::critical(m_dialog, tr("New Project"), tr("Failed to initialize data.")); + // TODO: if the dialog itself could react on the error + // the would not be necessary + QMessageBox::critical(m_dialog.get(), tr("New Project"), tr("Failed to initialize data.")); reject(); - deleteLater(); }); QObject::connect(m_styleModel.data(), &StyleModel::modelAboutToBeReset, this, [this] { @@ -101,7 +102,7 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) bool QdsNewDialog::eventFilter(QObject *obj, QEvent *event) { - if (obj == m_dialog && event->type() == QEvent::KeyPress + if (obj == m_dialog.get() && event->type() == QEvent::KeyPress && static_cast(event)->key() == Qt::Key_Escape) { reject(); return true; @@ -314,7 +315,7 @@ void QdsNewDialog::setWizardFactories(QList factories_, { Utils::Id platform = Utils::Id::fromSetting("Desktop"); - WizardFactories factories{factories_, m_dialog, platform}; + WizardFactories factories{factories_, m_dialog.get(), platform}; std::vector recents = m_recentsStore.fetchAll(); std::vector userPresets = m_userPresetsStore.fetchAll(); @@ -404,8 +405,6 @@ void QdsNewDialog::accept() m_recentsStore.save(preset); m_dialog->close(); - m_dialog->deleteLater(); - m_dialog = nullptr; } void QdsNewDialog::reject() @@ -415,12 +414,13 @@ void QdsNewDialog::reject() m_wizard.destroyWizard(); m_dialog->close(); - m_dialog = nullptr; + m_dialog.reset(); } QString QdsNewDialog::chooseProjectLocation() { - Utils::FilePath newPath = Utils::FileUtils::getExistingDirectory(m_dialog, tr("Choose Directory"), + Utils::FilePath newPath = Utils::FileUtils::getExistingDirectory(m_dialog.get(), + tr("Choose Directory"), m_qmlProjectLocation); return QDir::toNativeSeparators(newPath.toString()); @@ -473,7 +473,7 @@ void QdsNewDialog::savePresetDialogAccept() UserPresetData preset = currentUserPresetData(m_qmlPresetName); if (!m_userPresetsStore.save(preset)) { - QMessageBox::warning(m_dialog, + QMessageBox::warning(m_dialog.get(), tr("Save Preset"), tr("A preset with this name already exists.")); return; diff --git a/src/plugins/studiowelcome/qdsnewdialog.h b/src/plugins/studiowelcome/qdsnewdialog.h index f4f24d1810a..95bfa52fe9b 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.h +++ b/src/plugins/studiowelcome/qdsnewdialog.h @@ -7,6 +7,7 @@ #include #include +#include #include "wizardhandler.h" #include "presetmodel.h" @@ -64,7 +65,7 @@ public: explicit QdsNewDialog(QWidget *parent); - QWidget *widget() override { return m_dialog; } + QWidget *widget() override { return m_dialog.get(); } void setWizardFactories(QList factories, const Utils::FilePath &defaultLocation, const QVariantMap &extraVariables) override; @@ -139,7 +140,7 @@ private slots: void onWizardCreated(QStandardItemModel *screenSizeModel, QStandardItemModel *styleModel); private: - QQuickWidget *m_dialog = nullptr; + Utils::UniqueObjectPtr m_dialog; PresetData m_presetData; QPointer m_categoryModel; diff --git a/src/plugins/studiowelcome/wizardhandler.cpp b/src/plugins/studiowelcome/wizardhandler.cpp index 961fb701eeb..b86d33a1dfb 100644 --- a/src/plugins/studiowelcome/wizardhandler.cpp +++ b/src/plugins/studiowelcome/wizardhandler.cpp @@ -53,7 +53,10 @@ void WizardHandler::setupWizard() initializeProjectPage(m_wizard->page(0)); initializeFieldsPage(m_wizard->page(1)); - + if (!m_detailsPage) { + emit wizardCreationFailed(); + return; + } auto *screenFactorModel = getScreenFactorModel(m_detailsPage); auto *styleModel = getStyleModel(m_detailsPage); diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 33ec2ed7e42..8ced95c0fc0 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -2343,6 +2343,13 @@ void TextEditorWidget::selectWordUnderCursor() setMultiTextCursor(cursor); } +void TextEditorWidget::clearSelection() +{ + MultiTextCursor cursor = multiTextCursor(); + cursor.clearSelection(); + setMultiTextCursor(cursor); +} + void TextEditorWidget::showContextMenu() { QTextCursor tc = textCursor(); @@ -4244,6 +4251,10 @@ void TextEditorWidgetPrivate::registerActions() .setContext(m_editorContext) .addOnTriggered([this] { q->selectWordUnderCursor(); }) .setScriptable(true); + ActionBuilder(this, CLEAR_SELECTION) + .setContext(m_editorContext) + .addOnTriggered([this] { q->clearSelection(); }) + .setScriptable(true); ActionBuilder(this, GOTO_DOCUMENT_START) .setContext(m_editorContext) @@ -4754,8 +4765,11 @@ void TextEditorWidgetPrivate::highlightSearchResults(const QTextBlock &block, co break; if (m_findFlags & FindWholeWords) { auto posAtWordSeparator = [](const QString &text, int idx) { - if (idx < 0 || idx >= text.length()) - return false; + if (idx < 0) + return QTC_GUARD(idx == -1); + int textLength = text.length(); + if (idx >= textLength) + return QTC_GUARD(idx == textLength); const QChar c = text.at(idx); return !c.isLetterOrNumber() && c != QLatin1Char('_'); }; diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index 7fc56e87337..0546b21e045 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -430,6 +430,7 @@ public: virtual bool selectBlockUp(); virtual bool selectBlockDown(); void selectWordUnderCursor(); + void clearSelection(); void showContextMenu(); diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 2597deb6bba..e7f9fbd3d9f 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -143,6 +143,7 @@ const char GOTO_BLOCK_END_WITH_SELECTION[] = "TextEditor.GotoBlockEndWithSelecti const char SELECT_BLOCK_UP[] = "TextEditor.SelectBlockUp"; const char SELECT_BLOCK_DOWN[] = "TextEditor.SelectBlockDown"; const char SELECT_WORD_UNDER_CURSOR[] = "TextEditor.SelectWordUnderCursor"; +const char CLEAR_SELECTION[] = "TextEditor.ClearSelection"; const char VIEW_PAGE_UP[] = "TextEditor.viewPageUp"; const char VIEW_PAGE_DOWN[] = "TextEditor.viewPageDown"; const char VIEW_LINE_UP[] = "TextEditor.viewLineUp"; diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index c774fed0438..047f0a3f973 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -544,6 +544,8 @@ void TextEditorPlugin::createEditorCommands() .setDefaultKeySequence(QKeySequence(Tr::tr("Ctrl+Shift+Alt+U"))) .addToContainer(M_EDIT_ADVANCED, G_EDIT_BLOCKS); TextActionBuilder(this, SELECT_WORD_UNDER_CURSOR).setText(Tr::tr("Select Word Under Cursor")); + TextActionBuilder(this, CLEAR_SELECTION) + .setText(QCoreApplication::translate("QtC::Terminal", "Clear Selection")); TextActionBuilder(this, GOTO_DOCUMENT_START).setText(Tr::tr("Go to Document Start")); TextActionBuilder(this, GOTO_DOCUMENT_END).setText(Tr::tr("Go to Document End")); diff --git a/src/shared/qbs b/src/shared/qbs index 0336494de6c..70e60671e71 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 0336494de6c4e394b7354ca78dcb2192f01f9fc6 +Subproject commit 70e60671e71730f294530349d1fc57cec9d215ee diff --git a/tests/system/suite_WELP/tst_WELP04/test.py b/tests/system/suite_WELP/tst_WELP04/test.py index 6ccf2f0d3ac..21b4b515bbf 100644 --- a/tests/system/suite_WELP/tst_WELP04/test.py +++ b/tests/system/suite_WELP/tst_WELP04/test.py @@ -43,7 +43,7 @@ def main(): progressBarWait(warn=False) # select a text tutorial mouseClick(waitForObjectItem(listView, str(tutorial.text))) - test.verify("Building and Running an Example" in + test.verify("Tutorial: Build and run" in str(waitForObject(":Help Widget_Help::Internal::HelpWidget").windowTitle), "Verifying: The tutorial is opened inside Help.") # close help widget again to avoid focus issues diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 194a8ac4ccf..0d64d887018 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -16,10 +16,10 @@ def main(): if not startedWithoutPluginError(): return invokeMenuItem("Edit", "Preferences...") - __checkKits__() + qmakeFound = __checkKits__() clickButton(waitForObject(":Options.Cancel_QPushButton")) invokeMenuItem("File", "Exit") - __checkCreatedSettings__(emptySettings) + __checkCreatedSettings__(emptySettings, qmakeFound) def __createMinimumIni__(emptyParent): qtProjDir = os.path.join(emptyParent, "QtProject") @@ -61,6 +61,10 @@ def __checkKits__(): test.log(str(genericDebuggers)) # check Qt versions qmakePath = which("qmake") + if qmakePath and (not "Using Qt version" in + getOutputFromCmdline([qmakePath, "--version"], acceptedError=1)): + # ignore dysfunctional qmake, e.g. incomplete qtchooser + qmakePath = None foundQt = [] clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Qt Versions") __iterateTree__(":qtdirList_QTreeView", __qtFunc__, foundQt, qmakePath) @@ -71,6 +75,7 @@ def __checkKits__(): # check kits clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Kits") __iterateTree__(":BuildAndRun_QTreeView", __kitFunc__, foundQt, foundCompilerNames) + return qmakePath != None def __processSubItems__(treeObjStr, section, parModelIndexStr, doneItems, additionalFunc, *additionalParameters): @@ -295,18 +300,11 @@ def __getExpectedDebuggers__(): def __getCDB__(): result = [] possibleLocations = ["C:\\Program Files\\Debugging Tools for Windows (x64)", - "C:\\Program Files (x86)\\Debugging Tools for Windows (x86)", - "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\8.0\\Debuggers\\x64", - "C:\\Program Files (x86)\\Windows Kits\\8.1\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\8.1\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\8.1\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\8.1\\Debuggers\\x64", - "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\10\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\10\\Debuggers\\x64"] for cdbPath in possibleLocations: cdb = os.path.join(cdbPath, "cdb.exe") @@ -377,7 +375,7 @@ def __lowerStrs__(iterable): else: yield it -def __checkCreatedSettings__(settingsFolder): +def __checkCreatedSettings__(settingsFolder, qmakeFound): waitForCleanShutdown() qtProj = os.path.join(settingsFolder, "QtProject") creatorFolder = os.path.join(qtProj, "qtcreator") @@ -390,8 +388,9 @@ def __checkCreatedSettings__(settingsFolder): os.path.join(creatorFolder, "devices.xml"):0, os.path.join(creatorFolder, "helpcollection.qhc"):0, os.path.join(creatorFolder, "profiles.xml"):0, - os.path.join(creatorFolder, "qtversion.xml"):0, os.path.join(creatorFolder, "toolchains.xml"):0} + if qmakeFound: + files[os.path.join(creatorFolder, "qtversion.xml")] = 0 for f in folders: test.verify(os.path.isdir(f), "Verifying whether folder '%s' has been created." % os.path.basename(f)) diff --git a/tests/system/suite_general/tst_rename_file/test.py b/tests/system/suite_general/tst_rename_file/test.py index d2abe87ea2b..aebd7e5fd79 100644 --- a/tests/system/suite_general/tst_rename_file/test.py +++ b/tests/system/suite_general/tst_rename_file/test.py @@ -38,7 +38,7 @@ def main(): previous = filenames[-1] for filename in filenames: tempFiletype = filetype - if filetype == "QML" and not previous.endswith(".qml"): + if filetype == "QML" and not fileExtMatchesQml(previous): tempFiletype = "Other files" renameFile(templateDir, usedProFile, projectName + "." + tempFiletype, previous, filename) @@ -61,6 +61,15 @@ def verifyRenamedIncludes(templateDir, file, oldname, newname): 'Verify that new filename is included in %s' % file)): test.log(grep("include", fileText)) + +def fileExtMatchesQml(fileName): + if platform.system() == "Linux": + return fileName.endswith(".qml") + else: + # On case ignoring file systems, ".QML" is the same as ".qml" + return fileName.lower().endswith(".qml") + + def renameFile(projectDir, proFile, branch, oldname, newname): oldFilePath = os.path.join(projectDir, oldname) newFilePath = os.path.join(projectDir, newname) @@ -115,7 +124,7 @@ def renameFile(projectDir, proFile, branch, oldname, newname): test.verify(oldname not in os.listdir(projectDir), "Verify that file with old name does not exist: %s" % oldFilePath) - if newItemText.endswith("\\.qml"): + if fileExtMatchesQml(newItemText): newItemText = newItemText.replace(".Other files.", ".QML.") else: newItemText = newItemText.replace(".QML.", ".Other files.") diff --git a/tests/system/suite_tools/tst_designer_autocomplete/test.py b/tests/system/suite_tools/tst_designer_autocomplete/test.py index c77d4b5f180..1576e26e717 100644 --- a/tests/system/suite_tools/tst_designer_autocomplete/test.py +++ b/tests/system/suite_tools/tst_designer_autocomplete/test.py @@ -3,6 +3,15 @@ source("../../shared/qtcreator.py") + +def closeMainWindowCppIfOpen(): + mainWindow = waitForObject(":Qt Creator_Core::Internal::MainWindow", 1000) + mainWindowCppClosed = lambda: "mainwindow.cpp " not in str(mainWindow.windowTitle) + if "mainwindow.cpp " in str(mainWindow.windowTitle): + invokeMenuItem('File', 'Close "mainwindow.cpp"') + waitFor(mainWindowCppClosed, 2000) + + def main(): startQC() if not startedWithoutPluginError(): @@ -15,11 +24,14 @@ def main(): earlyExit() return - invokeMenuItem('Build', 'Build Project "%s"' % projectName) + closeMainWindowCppIfOpen() selectFromLocator("mainwindow.ui") dragAndDrop(waitForObject("{container=':qdesigner_internal::WidgetBoxCategoryListView'" "text='Push Button' type='QModelIndex'}"), 5, 5, ":FormEditorStack_qdesigner_internal::FormWindow", 20, 50, Qt.CopyAction) + proposalExists = lambda: object.exists(':popupFrame_TextEditor::GenericProposalWidget') + fileNameCombo = waitForObject(":Qt Creator_FilenameQComboBox", 1000) + fileSaved = lambda: not str(fileNameCombo.currentText).endswith('*') for buttonName in [None, "aDifferentName", "anotherDifferentName", "pushButton"]: if buttonName: openContextMenu(waitForObject("{container=':*Qt Creator.FormEditorStack_Designer::Internal::FormEditorStack'" @@ -31,8 +43,13 @@ def main(): else: # Verify that everything works without ever changing the name buttonName = "pushButton" + invokeMenuItem("File", "Save All") + waitFor(fileSaved, 1000) + invokeMenuItem('Build', 'Build Project "%s"' % projectName) + waitForCompile() selectFromLocator("mainwindow.cpp") editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") + snooze(1) for tryDotOperator in [False, True]: if not placeCursorToLine(editor, "ui->setupUi(this);"): earlyExit("Maybe the project template changed.") @@ -42,21 +59,34 @@ def main(): if tryDotOperator: snooze(1) type(editor, ".") - waitFor("object.exists(':popupFrame_TextEditor::GenericProposalWidget')", 1500) else: type(editor, "-") snooze(1) type(editor, ">") + + if not test.verify(waitFor(proposalExists, 1500), "Proposal should be shown"): + type(editor, "") + continue + + proposalListView = waitForObject(':popupFrame_Proposal_QListView') + items = dumpItems(proposalListView.model()) + if test.verify(" %s" % buttonName in items, "Button present in proposal?"): + type(proposalListView, str(buttonName[0])) + else: + test.log(str(items)) snooze(1) - proposalExists = lambda: object.exists(':popupFrame_TextEditor::GenericProposalWidget') - nativeType("%s" % buttonName[0]) if test.verify(waitFor(proposalExists, 4000), "Verify that GenericProposalWidget is being shown."): - nativeType("") + singleProposal = lambda: (object.exists(':popupFrame_Proposal_QListView') + and findObject(':popupFrame_Proposal_QListView').model().rowCount() == 1) + waitFor(singleProposal, 4000) + type(proposalListView, "") lineCorrect = lambda: str(lineUnderCursor(editor)).strip() == "ui->%s" % buttonName - test.verify(waitFor(lineCorrect, 1000), + test.verify(waitFor(lineCorrect, 4000), ('Comparing line "%s" to expected "%s"' % (lineUnderCursor(editor), "ui->%s" % buttonName))) - type(editor, "") # Delete line + type(editor, "") # Delete line + invokeMenuItem("File", "Save All") + closeMainWindowCppIfOpen() selectFromLocator("mainwindow.ui") - saveAndExit() + invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_tools/tst_designer_edit/test.py b/tests/system/suite_tools/tst_designer_edit/test.py index 96e289df885..68afd344dee 100644 --- a/tests/system/suite_tools/tst_designer_edit/test.py +++ b/tests/system/suite_tools/tst_designer_edit/test.py @@ -167,7 +167,7 @@ def main(): startQC() if not startedWithoutPluginError(): return - createProject_Qt_GUI(tempDir(), "DesignerTestApp", False) + createProject_Qt_GUI(tempDir(), "DesignerTestApp", False, targets=[Targets.DESKTOP_6_2_4]) selectFromLocator("mainwindow.ui") replaceEditorContent(waitForObject("{container=':*Qt Creator.Widget Box_QDockWidget' " "type='QLineEdit' visible='1'}"), "combo")