Merge "Merge remote-tracking branch 'origin/4.9'"
65
dist/changes-4.9.1.md
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
Qt Creator version 4.9.1 contains bug fixes.
|
||||||
|
|
||||||
|
The most important changes are listed in this document. For a complete
|
||||||
|
list of changes, see the Git log for the Qt Creator sources that
|
||||||
|
you can check out from the public Git repository. For example:
|
||||||
|
|
||||||
|
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||||
|
git log --cherry-pick --pretty=oneline origin/v4.9.0..v4.9.1
|
||||||
|
|
||||||
|
Editing
|
||||||
|
|
||||||
|
* Fixed folding for generic highlighter (QTCREATORBUG-22346)
|
||||||
|
|
||||||
|
QMake Projects
|
||||||
|
|
||||||
|
* Fixed unnecessary reparsing on file save (QTCREATORBUG-22361)
|
||||||
|
|
||||||
|
CMake Projects
|
||||||
|
|
||||||
|
* Fixed deployment with `QtCreatorDeployment.txt` (QTCREATORBUG-22184)
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
|
||||||
|
* Fixed ambiguity of `F10` shortcut (QTCREATORBUG-22330)
|
||||||
|
* CDB
|
||||||
|
* Fixed `Start and Break on Main` (QTCREATORBUG-22263)
|
||||||
|
|
||||||
|
Test Integration
|
||||||
|
|
||||||
|
* Fixed `Uncheck All`
|
||||||
|
|
||||||
|
Platform Specific
|
||||||
|
|
||||||
|
Android
|
||||||
|
|
||||||
|
* Fixed AVD creation for Google Play images
|
||||||
|
|
||||||
|
Remote Linux
|
||||||
|
|
||||||
|
* Fixed crash when running `Custom Executable` on remote Linux target
|
||||||
|
from Windows host (QTCREATORBUG-22414)
|
||||||
|
* Fixed SSH connection sharing on macOS (QTCREATORBUG-21748)
|
||||||
|
* Deployment via SFTP
|
||||||
|
* Fixed `Unexpected stat output for remote file` (QTCREATORBUG-22041)
|
||||||
|
* Fixed deployment of symbolic links (QTCREATORBUG-22307)
|
||||||
|
* Deployment via rsync
|
||||||
|
* Fixed compatibility issue with command line parameters
|
||||||
|
(QTCREATORBUG-22352)
|
||||||
|
|
||||||
|
Credits for these changes go to:
|
||||||
|
André Pönitz
|
||||||
|
BogDan Vatra
|
||||||
|
Christian Kandeler
|
||||||
|
Christian Stenger
|
||||||
|
David Schulz
|
||||||
|
Eike Ziller
|
||||||
|
Jaroslaw Kobus
|
||||||
|
Jonathan Liu
|
||||||
|
Leena Miettinen
|
||||||
|
Mitch Curtis
|
||||||
|
Nikolai Kosjar
|
||||||
|
Robert Löhning
|
||||||
|
Thomas Hartmann
|
||||||
|
Ulf Hermann
|
||||||
|
Ville Nummela
|
@@ -19,6 +19,7 @@ imagedirs = ../images \
|
|||||||
../../src/plugins/qmldesigner/components/componentcore/images \
|
../../src/plugins/qmldesigner/components/componentcore/images \
|
||||||
../../src/plugins/qmldesigner/components/formeditor \
|
../../src/plugins/qmldesigner/components/formeditor \
|
||||||
../../src/plugins/qmldesigner/components/navigator \
|
../../src/plugins/qmldesigner/components/navigator \
|
||||||
|
../../src/plugins/qmldesigner//qmldesignerextension/timelineeditor/images \
|
||||||
../../src/plugins/scxmleditor/common/images \
|
../../src/plugins/scxmleditor/common/images \
|
||||||
../../src/plugins/texteditor/images \
|
../../src/plugins/texteditor/images \
|
||||||
../../src/plugins/valgrind/images
|
../../src/plugins/valgrind/images
|
||||||
|
BIN
doc/images/anchor-bottom.png
Normal file
After Width: | Height: | Size: 98 B |
BIN
doc/images/anchor-fill.png
Normal file
After Width: | Height: | Size: 108 B |
BIN
doc/images/anchor-horizontal-center.png
Normal file
After Width: | Height: | Size: 95 B |
BIN
doc/images/anchor-left.png
Normal file
After Width: | Height: | Size: 97 B |
BIN
doc/images/anchor-right.png
Normal file
After Width: | Height: | Size: 97 B |
BIN
doc/images/anchor-top.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
doc/images/anchor-vertical-center.png
Normal file
After Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 12 KiB |
BIN
doc/images/keyframe_linear_inactive.png
Normal file
After Width: | Height: | Size: 367 B |
BIN
doc/images/keyframe_manualbezier_inactive.png
Normal file
After Width: | Height: | Size: 289 B |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 19 KiB |
BIN
doc/images/qtcreator-task-pane.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 53 KiB |
BIN
doc/images/studio-curve-picker.png
Normal file
After Width: | Height: | Size: 141 KiB |
BIN
doc/images/studio-timeline-settings.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
doc/images/studio-timeline.png
Normal file
After Width: | Height: | Size: 26 KiB |
@@ -698,6 +698,11 @@
|
|||||||
single instructions, such as \uicontrol {Step Into} and \uicontrol {Step Over}.
|
single instructions, such as \uicontrol {Step Into} and \uicontrol {Step Over}.
|
||||||
By default, the \uicontrol Disassembler view is hidden.
|
By default, the \uicontrol Disassembler view is hidden.
|
||||||
|
|
||||||
|
To access the \uicontrol Disassembler view, check
|
||||||
|
\uicontrol Debug > \uicontrol {Operate by Instruction} while the debugger is
|
||||||
|
running. Alternatively, click the \inlineimage debugger_singleinstructionmode.png
|
||||||
|
(\uicontrol {Operate by Instruction}) tool button on the debugger tool bar.
|
||||||
|
|
||||||
\section2 Viewing and Editing Register State
|
\section2 Viewing and Editing Register State
|
||||||
|
|
||||||
The \uicontrol Registers view displays the current state of the CPU registers.
|
The \uicontrol Registers view displays the current state of the CPU registers.
|
||||||
|
@@ -38,17 +38,20 @@
|
|||||||
structure.
|
structure.
|
||||||
|
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
\list
|
In the following screenshot, \QC points out an error, because a semicolon is
|
||||||
\li Syntax errors are underlined in red.
|
missing at the end of the line:
|
||||||
|
|
||||||
In the following screenshot, a semicolon is missing at the end
|
\image qtcreator-syntaxerror.png
|
||||||
of the line.
|
|
||||||
\image qtcreator-syntaxerror.png
|
|
||||||
\li Semantic errors and warnings are underlined in olive.
|
|
||||||
|
|
||||||
In the following screenshot, the variable is not used.
|
In the following screenshot, \QC issues a warning, because the variable is
|
||||||
\image qtcreator-semanticerror.png
|
not used:
|
||||||
\endlist
|
|
||||||
|
\image qtcreator-semanticerror.png
|
||||||
|
|
||||||
|
To modify the colors used for underlining errors and warnings, select
|
||||||
|
\uicontrol Tools > \uicontrol Options > \uicontrol {Text Editor} >
|
||||||
|
\uicontrol {Fonts & Colors} > \uicontrol Copy, and select new colors for
|
||||||
|
\uicontrol Error and \uicontrol Warning.
|
||||||
|
|
||||||
\section1 Viewing Annotations
|
\section1 Viewing Annotations
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2018 The Qt Company Ltd.
|
** Copyright (C) 2019 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
For more information about \QC modes, see \l {Modes}.
|
For more information about \QC modes, see \l {Selecting Modes}.
|
||||||
|
|
||||||
\section1 Moving Between Open Files
|
\section1 Moving Between Open Files
|
||||||
|
|
||||||
|
@@ -24,15 +24,19 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
//! [using sidebar views]
|
\contentspage index.html
|
||||||
|
\page creator-sidebar-views.html
|
||||||
|
\previouspage creator-modes.html
|
||||||
|
\nextpage creator-output-panes.html
|
||||||
|
|
||||||
\section1 Browsing Project Contents
|
\title Browsing Project Contents
|
||||||
|
|
||||||
A left and right sidebar are available in most \QC modes. The availability
|
A left and right sidebar are available in most \QC \l{Selecting Modes}
|
||||||
of the sidebars and their contents depend on the mode.
|
{modes}. The availability of the sidebars and their contents depend on
|
||||||
|
the mode.
|
||||||
|
|
||||||
In the \uicontrol Edit mode, you can use the sidebars to browse the project
|
In the \uicontrol Edit and \uicontrol Design mode, you can use the sidebars
|
||||||
contents.
|
to browse the project contents.
|
||||||
|
|
||||||
\image qtcreator-sidebar.png
|
\image qtcreator-sidebar.png
|
||||||
|
|
||||||
@@ -97,11 +101,7 @@
|
|||||||
In some views, right-clicking opens a context menu that contains functions
|
In some views, right-clicking opens a context menu that contains functions
|
||||||
for managing the objects listed in the view.
|
for managing the objects listed in the view.
|
||||||
|
|
||||||
//! [using sidebar views]
|
\section1 Viewing Project Files
|
||||||
|
|
||||||
//! [projects view]
|
|
||||||
|
|
||||||
\section2 Viewing Project Files
|
|
||||||
|
|
||||||
The sidebar displays projects in a project tree. The project tree contains
|
The sidebar displays projects in a project tree. The project tree contains
|
||||||
a list of all projects open in the current session. For each project, the
|
a list of all projects open in the current session. For each project, the
|
||||||
@@ -196,11 +196,7 @@
|
|||||||
files, as well as compare the selected file with the currently open file
|
files, as well as compare the selected file with the currently open file
|
||||||
in the diff editor. For more information, see \l{Comparing Files}.
|
in the diff editor. For more information, see \l{Comparing Files}.
|
||||||
|
|
||||||
//! [projects view]
|
\section1 Viewing Open Documents
|
||||||
|
|
||||||
//! [open documents view]
|
|
||||||
|
|
||||||
\section2 Viewing Open Documents
|
|
||||||
|
|
||||||
To see a list of open documents, switch to the \uicontrol {Open Documents}
|
To see a list of open documents, switch to the \uicontrol {Open Documents}
|
||||||
view. By right-clicking an open document, you can:
|
view. By right-clicking an open document, you can:
|
||||||
@@ -210,11 +206,7 @@
|
|||||||
closed when \uicontrol {Close All} is used.
|
closed when \uicontrol {Close All} is used.
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
//! [open documents view]
|
\section1 Viewing the File System
|
||||||
|
|
||||||
//! [file system view]
|
|
||||||
|
|
||||||
\section2 Viewing the File System
|
|
||||||
|
|
||||||
If you cannot see a file in the \uicontrol Projects view, switch to the
|
If you cannot see a file in the \uicontrol Projects view, switch to the
|
||||||
\uicontrol {File System} view, which shows all the files in the file system.
|
\uicontrol {File System} view, which shows all the files in the file system.
|
||||||
@@ -282,11 +274,7 @@
|
|||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
//! [file system view]
|
\section1 Viewing Defined Types and Symbols
|
||||||
|
|
||||||
//! [outline view]
|
|
||||||
|
|
||||||
\section2 Viewing Defined Types and Symbols
|
|
||||||
|
|
||||||
The \uicontrol Outline view shows an overview of defined types and other
|
The \uicontrol Outline view shows an overview of defined types and other
|
||||||
symbols, as well as their properties and hierarchy in a source file.
|
symbols, as well as their properties and hierarchy in a source file.
|
||||||
@@ -298,12 +286,7 @@
|
|||||||
editor, deselect \uicontrol {Synchronize with Editor}.
|
editor, deselect \uicontrol {Synchronize with Editor}.
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
//! [outline view]
|
\section1 Viewing the Class Hierarchy
|
||||||
|
|
||||||
|
|
||||||
//! [class view]
|
|
||||||
|
|
||||||
\section2 Viewing the Class Hierarchy
|
|
||||||
|
|
||||||
The \uicontrol {Class View} shows the class hierarchy of the currently
|
The \uicontrol {Class View} shows the class hierarchy of the currently
|
||||||
open projects. To organize the view by subprojects, click
|
open projects. To organize the view by subprojects, click
|
||||||
@@ -313,22 +296,12 @@
|
|||||||
To visit all parts of a namespace, double-click on the namespace item
|
To visit all parts of a namespace, double-click on the namespace item
|
||||||
multiple times.
|
multiple times.
|
||||||
|
|
||||||
//! [class view]
|
\section1 Viewing Type Hierarchy
|
||||||
|
|
||||||
|
|
||||||
//! [type hierarchy view]
|
|
||||||
|
|
||||||
\section2 Viewing Type Hierarchy
|
|
||||||
|
|
||||||
To view the base classes of a class, right-click the class and select
|
To view the base classes of a class, right-click the class and select
|
||||||
\uicontrol {Open Type Hierarchy} or press \key {Ctrl+Shift+T}.
|
\uicontrol {Open Type Hierarchy} or press \key {Ctrl+Shift+T}.
|
||||||
|
|
||||||
//! [type hierarchy view]
|
\section1 Viewing Include Hierarchy
|
||||||
|
|
||||||
|
|
||||||
//! [include hierarchy view]
|
|
||||||
|
|
||||||
\section2 Viewing Include Hierarchy
|
|
||||||
|
|
||||||
To view which files are included in the current file and which files include
|
To view which files are included in the current file and which files include
|
||||||
the current file, right-click in the editor and select
|
the current file, right-click in the editor and select
|
||||||
@@ -336,6 +309,4 @@
|
|||||||
|
|
||||||
To keep the view synchronized with the file currently opened in the editor,
|
To keep the view synchronized with the file currently opened in the editor,
|
||||||
select \uicontrol {Synchronize with Editor}.
|
select \uicontrol {Synchronize with Editor}.
|
||||||
|
|
||||||
//! [include hierarchy view]
|
|
||||||
*/
|
*/
|
@@ -34,11 +34,10 @@
|
|||||||
\page creator-quick-tour.html
|
\page creator-quick-tour.html
|
||||||
\if defined(qtdesignstudio)
|
\if defined(qtdesignstudio)
|
||||||
\previouspage qtbridge-ps-using.html
|
\previouspage qtbridge-ps-using.html
|
||||||
\nextpage creator-using-qt-quick-designer.html
|
|
||||||
\else
|
\else
|
||||||
\previouspage creator-overview.html
|
\previouspage creator-overview.html
|
||||||
\nextpage creator-configuring.html
|
|
||||||
\endif
|
\endif
|
||||||
|
\nextpage creator-modes.html
|
||||||
|
|
||||||
\title User Interface
|
\title User Interface
|
||||||
|
|
||||||
@@ -64,7 +63,8 @@
|
|||||||
\image studio-welcome-mode.png
|
\image studio-welcome-mode.png
|
||||||
\endif
|
\endif
|
||||||
|
|
||||||
You can use the mode selector (1) to change to another \QC mode.
|
You can use the \l{Selecting Modes}{mode selector} (1) to change to another
|
||||||
|
\QC mode.
|
||||||
|
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
You can use the kit selector (2) to select the
|
You can use the kit selector (2) to select the
|
||||||
@@ -74,363 +74,27 @@
|
|||||||
\else
|
\else
|
||||||
You can use the kit selector (2) to select the \l{glossary-buildandrun-kit}
|
You can use the kit selector (2) to select the \l{glossary-buildandrun-kit}
|
||||||
{kit} for running (3) or debugging (4) the application. Output from these
|
{kit} for running (3) or debugging (4) the application. Output from these
|
||||||
actions is displayed in the output panes (5).
|
actions is displayed in the \l{Viewing Output}{output panes} (5).
|
||||||
\endif
|
\endif
|
||||||
|
|
||||||
You can use the locator (6) to browse through projects, files, classes,
|
You can use the \l{Searching with the Locator}{locator} (6) to browse
|
||||||
functions, documentation, and file systems.
|
through projects, files, classes, functions, documentation, and file
|
||||||
|
systems.
|
||||||
|
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
For a quick tour of the user interface that takes you to the locations of
|
For a quick tour of the user interface that takes you to the locations of
|
||||||
these controls, select \uicontrol Help > \uicontrol {UI Tour}.
|
these controls, select \uicontrol Help > \uicontrol {UI Tour}.
|
||||||
\endif
|
\endif
|
||||||
|
|
||||||
\section1 Modes
|
|
||||||
|
|
||||||
The mode selector allows you to quickly switch between tasks such as editing
|
The following sections describe some of these controls in more detail:
|
||||||
project and source files, designing application UIs, configuring how
|
|
||||||
projects are built and executed, and debugging your applications. To change
|
|
||||||
modes, click the icons, or use the \l{keyboard-shortcuts}
|
|
||||||
{corresponding keyboard shortcut}.
|
|
||||||
|
|
||||||
To hide the mode selector and to save space on the display, select
|
|
||||||
\uicontrol Window > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
|
|
||||||
To only show icons on the mode selector, select the \uicontrol {Icons Only}
|
|
||||||
style.
|
|
||||||
|
|
||||||
The following image displays an example application in \uicontrol Edit mode (1)
|
|
||||||
and \uicontrol Design mode (2).
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\image qtcreator-qt-quick-editors.png "Edit mode and Design mode"
|
|
||||||
\else
|
|
||||||
\image studio-editors.png "Edit mode and Design mode"
|
|
||||||
\endif
|
|
||||||
|
|
||||||
You can use \QC in the following modes:
|
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
\li \l{Selecting Modes}{Mode selector}
|
||||||
\li \uicontrol Welcome mode for opening projects.
|
\li \l{Browsing Project Contents}{Sidebars}
|
||||||
|
\li \l{Viewing Output}{Output panes}
|
||||||
\li \uicontrol{\l{Coding}{Edit}} mode for editing project and source
|
|
||||||
files.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol{\l{Designing User Interfaces}{Design}}
|
|
||||||
\else
|
|
||||||
\li \uicontrol{\l{Editing QML Files in Design Mode}{Design}}
|
|
||||||
\endif
|
|
||||||
mode for designing and developing application user interfaces.
|
|
||||||
This mode is available for UI files.
|
|
||||||
|
|
||||||
\li \uicontrol{\l{Debugging}{Debug}} mode for inspecting the state of your
|
|
||||||
application while debugging and for using code analysis tools
|
|
||||||
to detect memory leaks and profile C++ or QML code.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol{\l{Specifying Build Settings}{Projects}} mode
|
|
||||||
for configuring project building and execution.
|
|
||||||
\else
|
|
||||||
\li \uicontrol{\l{Selecting the Preview Tool}{Projects}} mode
|
|
||||||
for selecting the tool to use for live preview.
|
|
||||||
\endif
|
|
||||||
This mode is available when a project is open.
|
|
||||||
|
|
||||||
\li \uicontrol{\l{Using the Help Mode}{Help}} mode for viewing Qt
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
Certain actions in \QC trigger a mode change. Clicking on \uicontrol {Debug} >
|
|
||||||
\uicontrol {Start Debugging} > \uicontrol {Start Debugging} automatically switches to
|
|
||||||
\uicontrol {Debug} mode.
|
|
||||||
|
|
||||||
\include creator-sidebar-views.qdocinc using sidebar views
|
|
||||||
\include creator-sidebar-views.qdocinc projects view
|
|
||||||
\include creator-sidebar-views.qdocinc open documents view
|
|
||||||
\include creator-sidebar-views.qdocinc file system view
|
|
||||||
\include creator-sidebar-views.qdocinc outline view
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\include creator-sidebar-views.qdocinc class view
|
|
||||||
\include creator-sidebar-views.qdocinc type hierarchy view
|
|
||||||
\include creator-sidebar-views.qdocinc include hierarchy view
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\section1 Viewing Output
|
|
||||||
|
|
||||||
The task pane in \QC can display one of the following panes:
|
|
||||||
|
|
||||||
\list
|
|
||||||
|
|
||||||
\li \uicontrol{Issues}
|
|
||||||
|
|
||||||
\li \uicontrol{Search Results}
|
|
||||||
|
|
||||||
\li \uicontrol{Application Output}
|
|
||||||
|
|
||||||
\li \uicontrol{Compile Output}
|
|
||||||
|
|
||||||
\li \uicontrol {QML Debugger Console}
|
|
||||||
|
|
||||||
\li \uicontrol{General Messages}
|
|
||||||
|
|
||||||
\li \uicontrol{Version Control}
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol{Test Results}
|
|
||||||
|
|
||||||
\li \uicontrol {To-Do Entries}
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
Output panes are available in all \l{Modes}{modes}. Click the name of an
|
|
||||||
output pane to open the pane. To maximize an open output pane, click the
|
|
||||||
\uicontrol {Maximize Output Pane} button or press \key {Alt+9}.
|
|
||||||
|
|
||||||
To search within the \uicontrol{Application Output} and \uicontrol{Compile Output}
|
|
||||||
panes, press \key {Ctrl+F} when the pane is active. Enter search criteria in
|
|
||||||
the \uicontrol Find field and click the left and right arrows to search down and
|
|
||||||
up in the pane. In these panes, you can also use the zoom buttons to increase and
|
|
||||||
decrease the text size of the output.
|
|
||||||
|
|
||||||
To open the \uicontrol{General Messages} and
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\l{Using Version Control Systems}{Version Control}
|
|
||||||
\else
|
|
||||||
\l{Using Git}{Version Control}
|
|
||||||
\endif
|
|
||||||
panes, select \uicontrol {Window > Output Panes}.
|
|
||||||
\if defined(qtcreator)
|
|
||||||
To display the \uicontrol {To-Do Entries} pane, enable the Todo plugin.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
For more information about the \uicontrol {QML Debugger Console} view, see
|
|
||||||
\l{Executing JavaScript Expressions}.
|
|
||||||
|
|
||||||
\section2 Issues
|
|
||||||
|
|
||||||
The \uicontrol{Issues} pane provides lists of following types of issues:
|
|
||||||
|
|
||||||
\list
|
|
||||||
|
|
||||||
\if defined(qtdesignstudio)
|
|
||||||
\li \uicontrol {Asset Importer Error} - Errors and warnings encountered
|
|
||||||
while importing assets from a design tool.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\li \uicontrol {Build System} - Errors and warnings encountered during a
|
|
||||||
build.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol {Clang Code Model} -
|
|
||||||
\l {Parsing C++ Files with the Clang Code Model}
|
|
||||||
{Errors and warnings from the current editor}.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\li \uicontrol Compile - Selected output from the compiler. Open the
|
|
||||||
\uicontrol {Compile Output} pane for more detailed information.
|
|
||||||
|
|
||||||
\li \uicontrol{Debug Information} - Lists debug information packages that might
|
|
||||||
be missing.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol Debugger - Errors encountered while running the
|
|
||||||
\l{Analyzing Code}{Valgrind code analysis tools}.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\li \uicontrol{Debugger Runtime} - Errors encountered when starting \QC. For
|
|
||||||
example, information about missing DLLs.
|
|
||||||
|
|
||||||
\li \uicontrol Deployment - Errors encountered between building an application
|
|
||||||
successfully and starting it on a \l{glossary-device}{device}.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated
|
|
||||||
by \l{Showing Task List Files in Issues Pane}
|
|
||||||
{code scanning and analysis tools}.
|
|
||||||
|
|
||||||
\li \uicontrol Python - Runtime errors and exceptions of Python scripts.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\li \uicontrol QML and \uicontrol {QML Analysis} -
|
|
||||||
\l{JavaScript and QML Error Codes}
|
|
||||||
{QML and JavaScript syntax errors}.
|
|
||||||
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
The pane filters out irrelevant output from the build tools and presents the
|
|
||||||
issues in an organized way. To further filter the output by type, select
|
|
||||||
\uicontrol {Filter Tree}
|
|
||||||
and then select a filter.
|
|
||||||
|
|
||||||
\image qtcreator-build-issues.png
|
|
||||||
|
|
||||||
Right-clicking on a line brings up a context menu with actions that you can
|
|
||||||
apply to the contents of the line. You can remove a line, copy its contents
|
|
||||||
to the clipboard, or search the Internet for a solution using the contents
|
|
||||||
of the line as search criteria. In addition, you can show a version control
|
|
||||||
annotation view of the line that causes the error message.
|
|
||||||
|
|
||||||
To navigate to the corresponding source code, click an issue or
|
|
||||||
select \uicontrol {Show in Editor} in the context menu. The entry must contain the
|
|
||||||
name of the file where the issue was found.
|
|
||||||
|
|
||||||
To view more information about an issue in the \uicontrol {Compile Output} pane,
|
|
||||||
select \uicontrol {Show Output} in the context menu.
|
|
||||||
|
|
||||||
To jump from one issue to the next or previous one, press \key F6 and
|
|
||||||
\key Shift+F6.
|
|
||||||
|
|
||||||
\section2 Search Results
|
|
||||||
|
|
||||||
In the \uicontrol{Search Results} pane, you can search through projects, files on
|
|
||||||
a file system or the currently open files:
|
|
||||||
|
|
||||||
\image qtcreator-search-results.png "Search Results output pane"
|
|
||||||
|
|
||||||
The search results are stored in the search history (1) from which you can
|
|
||||||
select earlier searches.
|
|
||||||
|
|
||||||
The figure below shows an example search result for all
|
|
||||||
occurrences of the search string in the specified directory.
|
|
||||||
|
|
||||||
\image qtcreator-searchresults.png
|
|
||||||
|
|
||||||
For more information about the different search options, see
|
|
||||||
\l {Finding and Replacing}.
|
|
||||||
|
|
||||||
\section2 Application Output
|
|
||||||
|
|
||||||
The \uicontrol{Application Output} pane displays the status of a program when
|
|
||||||
it is executed, and the debug output.
|
|
||||||
|
|
||||||
\image qtcreator-application-output.png
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
If you specify command line arguments in the run settings that are passed
|
|
||||||
to the application when running it, they are displayed as a part of the
|
|
||||||
application output. For more information, see
|
|
||||||
\l{Specifying Run Settings for Desktop Device Types}.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
Select toolbar buttons to run applications, to attach the debugger to the
|
|
||||||
running application, and to stop running or debugging.
|
|
||||||
|
|
||||||
To specify settings for displaying application output, select
|
|
||||||
\uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} >
|
|
||||||
\uicontrol Application Output, or click the \uicontrol {Open Settings Page}
|
|
||||||
button. You can select whether to open the \uicontrol{Application Output} pane
|
|
||||||
on output when running or debugging applications, to clear old output on a new run,
|
|
||||||
to word-wrap output, and to limit output to the specified number of lines.
|
|
||||||
|
|
||||||
\section2 Compile Output
|
|
||||||
|
|
||||||
The \uicontrol{Compile Output} pane provides all output from the compiler.
|
|
||||||
The \uicontrol{Compile Output} is a more detailed version of information
|
|
||||||
displayed in the \uicontrol{Issues} pane.
|
|
||||||
|
|
||||||
\image qtcreator-compile-pane.png
|
|
||||||
|
|
||||||
Double-click on a file name in an error message to open the file in the
|
|
||||||
code editor.
|
|
||||||
|
|
||||||
Select the \uicontrol {Cancel Build} button to cancel the build.
|
|
||||||
|
|
||||||
To specify whether to open the \uicontrol {Compile Output} pane on output
|
|
||||||
when building applications, select \uicontrol Tools > \uicontrol Options >
|
|
||||||
\uicontrol {Build & Run} > \uicontrol Compile Output, and then select the
|
|
||||||
\uicontrol {Open pane when building} check box.
|
|
||||||
In the \uicontrol {Limit output to} field, you can specify the maximum
|
|
||||||
amount of build output lines to display in the pane.
|
|
||||||
|
|
||||||
You can also reach the options page by clicking the \uicontrol {Open Settings Page}
|
|
||||||
button.
|
|
||||||
|
|
||||||
\if defined(qtcreator)
|
|
||||||
\section2 To-Do Entries
|
|
||||||
|
|
||||||
The \uicontrol {To-Do Entries} pane lists the BUG, FIXME, NOTE, TODO, and
|
|
||||||
WARNING keywords from the current file, from all project files, or from a
|
|
||||||
subproject. Click the icons on the toolbar to show only the selected
|
|
||||||
keywords.
|
|
||||||
|
|
||||||
\image qtcreator-todo-pane.png
|
|
||||||
|
|
||||||
To add keywords, select \uicontrol Tools > \uicontrol Options >
|
|
||||||
\uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color
|
|
||||||
for the keyword.
|
|
||||||
|
|
||||||
\image qtcreator-todo-options.png
|
|
||||||
|
|
||||||
To change the icon and line background color of the selected keyword, select
|
|
||||||
\uicontrol Edit.
|
|
||||||
|
|
||||||
To remove the selected keyword, select \uicontrol Remove.
|
|
||||||
|
|
||||||
To reset the list to predefined keywords, select \uicontrol Reset. All your
|
|
||||||
changes will be permanently lost.
|
|
||||||
|
|
||||||
To determine whether the keywords in the whole project, in the current file,
|
|
||||||
or in a subproject are displayed by default, select the appropriate option
|
|
||||||
in the \uicontrol {Scanning scope} group.
|
|
||||||
|
|
||||||
To exclude files from scanning, select \uicontrol {Project Settings} >
|
|
||||||
\uicontrol {To-Do} in the
|
|
||||||
\uicontrol Projects mode. Select \uicontrol Add and enter a regular
|
|
||||||
expression that matches the path to files to exclude. Use a forward slash
|
|
||||||
(/) as a separator in the path also on Windows.
|
|
||||||
|
|
||||||
The Todo plugin is disabled by default. To enable the plugin, select
|
|
||||||
\uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities >
|
|
||||||
\uicontrol Todo and restart
|
|
||||||
\QC.
|
|
||||||
|
|
||||||
In addition, you can open task list files generated by code scanning and
|
|
||||||
analysis tools in the \uicontrol Issues pane. For more information, see
|
|
||||||
\l{Showing Task List Files in Issues Pane}.
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\section1 Changing Languages
|
|
||||||
|
|
||||||
\QC has been localized into several languages. If the system language is one
|
|
||||||
of the supported languages, it is automatically selected. To change the
|
|
||||||
language, select \uicontrol {Tools > Options > Environment} and select a language
|
|
||||||
in the \uicontrol Language field. The change takes effect after you restart \QC.
|
|
||||||
|
|
||||||
\section1 Viewing Images
|
|
||||||
|
|
||||||
\QC opens image files in the image viewer.
|
|
||||||
|
|
||||||
\image qtcreator-image-viewer.png "Image viewer"
|
|
||||||
|
|
||||||
Use the toolbar buttons (1) or \l{Keyboard Shortcuts}{keyboard shortcuts}
|
|
||||||
to:
|
|
||||||
|
|
||||||
\list
|
|
||||||
|
|
||||||
\li Export SVG images to pixmaps
|
|
||||||
|
|
||||||
\li Switch between background and outline modes
|
|
||||||
|
|
||||||
\li Zoom in and out
|
|
||||||
|
|
||||||
\li Fit images to screen
|
|
||||||
|
|
||||||
\li Return to original size
|
|
||||||
|
|
||||||
\li Play and pause animated GIF and MNG images
|
|
||||||
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
\section2 Exporting SVG Images
|
|
||||||
|
|
||||||
If you receive a freely scalable icon in the SVG format from an UI designer,
|
|
||||||
you can export it to several images of different sizes to create a set of
|
|
||||||
pixmaps. You can then use QIcon::addPixmap() to add the pixmaps to icons in
|
|
||||||
different modes and states.
|
|
||||||
|
|
||||||
\section1 Navigating with Keyboard
|
\section1 Navigating with Keyboard
|
||||||
|
|
||||||
\QC caters not only to developers who are used to using the mouse,
|
\QC caters not only to developers who are used to using the mouse,
|
||||||
@@ -544,3 +208,365 @@
|
|||||||
\uicontrol {Enable high DPI scaling}. The changes will take effect after you
|
\uicontrol {Enable high DPI scaling}. The changes will take effect after you
|
||||||
restart \QC.
|
restart \QC.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage index.html
|
||||||
|
\page creator-modes.html
|
||||||
|
\previouspage creator-quick-tour.html
|
||||||
|
\nextpage creator-sidebar-views.html
|
||||||
|
|
||||||
|
\title Selecting Modes
|
||||||
|
|
||||||
|
\image qtcreator-mode-selector.png
|
||||||
|
|
||||||
|
The mode selector allows you to quickly switch between tasks such as editing
|
||||||
|
project and source files, designing application UIs, configuring how
|
||||||
|
projects are built and executed, and debugging your applications. To change
|
||||||
|
modes, click the icons, or use the \l{keyboard-shortcuts}
|
||||||
|
{corresponding keyboard shortcut}.
|
||||||
|
|
||||||
|
To hide the mode selector and to save space on the display, select
|
||||||
|
\uicontrol Window > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
|
||||||
|
To only show icons on the mode selector, select the \uicontrol {Icons Only}
|
||||||
|
style.
|
||||||
|
|
||||||
|
The following image displays an example application in \uicontrol Edit mode (1)
|
||||||
|
and \uicontrol Design mode (2).
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\image qtcreator-qt-quick-editors.png "Edit mode and Design mode"
|
||||||
|
\else
|
||||||
|
\image studio-editors.png "Edit mode and Design mode"
|
||||||
|
\endif
|
||||||
|
|
||||||
|
You can use \QC in the following modes:
|
||||||
|
|
||||||
|
\list
|
||||||
|
|
||||||
|
\li \uicontrol {\l{User Interface}{Welcome}} mode for opening projects.
|
||||||
|
|
||||||
|
\li \uicontrol{\l{Coding}{Edit}} mode for editing project and source
|
||||||
|
files.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol{\l{Designing User Interfaces}{Design}}
|
||||||
|
\else
|
||||||
|
\li \uicontrol{\l{Editing QML Files in Design Mode}{Design}}
|
||||||
|
\endif
|
||||||
|
mode for designing and developing application user interfaces.
|
||||||
|
This mode is available for UI files.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol{\l{Debugging}{Debug}}
|
||||||
|
\else
|
||||||
|
\li \uicontrol {\l{Debugging and Profiling}{Debug}}
|
||||||
|
\endif
|
||||||
|
mode for inspecting the state of your
|
||||||
|
application while debugging and for using code analysis tools
|
||||||
|
to detect memory leaks and profile C++ or QML code.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol{\l{Specifying Build Settings}{Projects}} mode
|
||||||
|
for configuring project building and execution.
|
||||||
|
\else
|
||||||
|
\li \uicontrol{\l{Selecting the Preview Tool}{Projects}} mode
|
||||||
|
for selecting the tool to use for live preview.
|
||||||
|
\endif
|
||||||
|
This mode is available when a project is open.
|
||||||
|
|
||||||
|
\li \uicontrol{\l{Using the Help Mode}{Help}} mode for viewing Qt
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
Certain actions in \QC trigger a mode change. Clicking on \uicontrol {Debug} >
|
||||||
|
\uicontrol {Start Debugging} > \uicontrol {Start Debugging} automatically switches to
|
||||||
|
\uicontrol {Debug} mode.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage index.html
|
||||||
|
\page creator-output-panes.html
|
||||||
|
\previouspage creator-sidebar-views.html
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
\nextpage creator-using-qt-quick-designer.html
|
||||||
|
\else
|
||||||
|
\nextpage creator-configuring.html
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\title Viewing Output
|
||||||
|
|
||||||
|
\image qtcreator-task-pane.png
|
||||||
|
|
||||||
|
The task pane in \QC can display one of the following panes:
|
||||||
|
|
||||||
|
\list
|
||||||
|
|
||||||
|
\li \uicontrol{Issues}
|
||||||
|
|
||||||
|
\li \uicontrol{Search Results}
|
||||||
|
|
||||||
|
\li \uicontrol{Application Output}
|
||||||
|
|
||||||
|
\li \uicontrol{Compile Output}
|
||||||
|
|
||||||
|
\li \uicontrol {QML Debugger Console}
|
||||||
|
|
||||||
|
\li \uicontrol{General Messages}
|
||||||
|
|
||||||
|
\li \uicontrol{Version Control}
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol{Test Results}
|
||||||
|
|
||||||
|
\li \uicontrol {To-Do Entries}
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
Output panes are available in all \l{Selecting Modes}{modes}. Click the name
|
||||||
|
of an output pane to open the pane. To maximize an open output pane, click
|
||||||
|
the \uicontrol {Maximize Output Pane} button or press \key {Alt+9}.
|
||||||
|
|
||||||
|
To search within the \uicontrol{Application Output} and \uicontrol{Compile Output}
|
||||||
|
panes, press \key {Ctrl+F} when the pane is active. Enter search criteria in
|
||||||
|
the \uicontrol Find field and click the left and right arrows to search down and
|
||||||
|
up in the pane. In these panes, you can also use the zoom buttons to increase and
|
||||||
|
decrease the text size of the output.
|
||||||
|
|
||||||
|
To open the \uicontrol{General Messages} and
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\l{Using Version Control Systems}{Version Control}
|
||||||
|
\else
|
||||||
|
\l{Using Git}{Version Control}
|
||||||
|
\endif
|
||||||
|
panes, select \uicontrol {Window > Output Panes}.
|
||||||
|
\if defined(qtcreator)
|
||||||
|
To display the \uicontrol {To-Do Entries} pane, enable the Todo plugin.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
For more information about the \uicontrol {QML Debugger Console} view, see
|
||||||
|
\l{Executing JavaScript Expressions}.
|
||||||
|
|
||||||
|
\section1 Issues
|
||||||
|
|
||||||
|
The \uicontrol{Issues} pane provides lists of following types of issues:
|
||||||
|
|
||||||
|
\list
|
||||||
|
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
\li \uicontrol {Asset Importer Error} - Errors and warnings encountered
|
||||||
|
while importing assets from a design tool.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \uicontrol {Build System} - Errors and warnings encountered during a
|
||||||
|
build.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol {Clang Code Model} -
|
||||||
|
\l {Parsing C++ Files with the Clang Code Model}
|
||||||
|
{Errors and warnings from the current editor}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \uicontrol Compile - Selected output from the compiler. Open the
|
||||||
|
\uicontrol {Compile Output} pane for more detailed information.
|
||||||
|
|
||||||
|
\li \uicontrol{Debug Information} - Lists debug information packages that might
|
||||||
|
be missing.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol Debugger - Errors encountered while running the
|
||||||
|
\l{Analyzing Code}{Valgrind code analysis tools}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \uicontrol{Debugger Runtime} - Errors encountered when starting \QC. For
|
||||||
|
example, information about missing DLLs.
|
||||||
|
|
||||||
|
\li \uicontrol Deployment - Errors encountered between building an application
|
||||||
|
successfully and starting it on a \l{glossary-device}{device}.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated
|
||||||
|
by \l{Showing Task List Files in Issues Pane}
|
||||||
|
{code scanning and analysis tools}.
|
||||||
|
|
||||||
|
\li \uicontrol Python - Runtime errors and exceptions of Python scripts.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \uicontrol QML and \uicontrol {QML Analysis} -
|
||||||
|
\l{JavaScript and QML Error Codes}
|
||||||
|
{QML and JavaScript syntax errors}.
|
||||||
|
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
The pane filters out irrelevant output from the build tools and presents the
|
||||||
|
issues in an organized way. To further filter the output by type, select
|
||||||
|
\uicontrol {Filter Tree}
|
||||||
|
and then select a filter.
|
||||||
|
|
||||||
|
\image qtcreator-build-issues.png
|
||||||
|
|
||||||
|
Right-clicking on a line brings up a context menu with actions that you can
|
||||||
|
apply to the contents of the line. You can remove a line, copy its contents
|
||||||
|
to the clipboard, or search the Internet for a solution using the contents
|
||||||
|
of the line as search criteria. In addition, you can show a version control
|
||||||
|
annotation view of the line that causes the error message.
|
||||||
|
|
||||||
|
To navigate to the corresponding source code, click an issue or
|
||||||
|
select \uicontrol {Show in Editor} in the context menu. The entry must contain the
|
||||||
|
name of the file where the issue was found.
|
||||||
|
|
||||||
|
To view more information about an issue in the \uicontrol {Compile Output} pane,
|
||||||
|
select \uicontrol {Show Output} in the context menu.
|
||||||
|
|
||||||
|
To jump from one issue to the next or previous one, press \key F6 and
|
||||||
|
\key Shift+F6.
|
||||||
|
|
||||||
|
\section1 Search Results
|
||||||
|
|
||||||
|
In the \uicontrol{Search Results} pane, you can search through projects, files on
|
||||||
|
a file system or the currently open files:
|
||||||
|
|
||||||
|
\image qtcreator-search-results.png "Search Results output pane"
|
||||||
|
|
||||||
|
The search results are stored in the search history (1) from which you can
|
||||||
|
select earlier searches.
|
||||||
|
|
||||||
|
The figure below shows an example search result for all
|
||||||
|
occurrences of the search string in the specified directory.
|
||||||
|
|
||||||
|
\image qtcreator-searchresults.png
|
||||||
|
|
||||||
|
For more information about the different search options, see
|
||||||
|
\l {Finding and Replacing}.
|
||||||
|
|
||||||
|
\section1 Application Output
|
||||||
|
|
||||||
|
The \uicontrol{Application Output} pane displays the status of a program when
|
||||||
|
it is executed, and the debug output.
|
||||||
|
|
||||||
|
\image qtcreator-application-output.png
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
If you specify command line arguments in the run settings that are passed
|
||||||
|
to the application when running it, they are displayed as a part of the
|
||||||
|
application output. For more information, see
|
||||||
|
\l{Specifying Run Settings for Desktop Device Types}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
Select toolbar buttons to run applications, to attach the debugger to the
|
||||||
|
running application, and to stop running or debugging.
|
||||||
|
|
||||||
|
To specify settings for displaying application output, select
|
||||||
|
\uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} >
|
||||||
|
\uicontrol Application Output, or click the \uicontrol {Open Settings Page}
|
||||||
|
button. You can select whether to open the \uicontrol{Application Output} pane
|
||||||
|
on output when running or debugging applications, to clear old output on a new run,
|
||||||
|
to word-wrap output, and to limit output to the specified number of lines.
|
||||||
|
|
||||||
|
\section1 Compile Output
|
||||||
|
|
||||||
|
The \uicontrol{Compile Output} pane provides all output from the compiler.
|
||||||
|
The \uicontrol{Compile Output} is a more detailed version of information
|
||||||
|
displayed in the \uicontrol{Issues} pane.
|
||||||
|
|
||||||
|
\image qtcreator-compile-pane.png
|
||||||
|
|
||||||
|
Double-click on a file name in an error message to open the file in the
|
||||||
|
code editor.
|
||||||
|
|
||||||
|
Select the \uicontrol {Cancel Build} button to cancel the build.
|
||||||
|
|
||||||
|
To specify whether to open the \uicontrol {Compile Output} pane on output
|
||||||
|
when building applications, select \uicontrol Tools > \uicontrol Options >
|
||||||
|
\uicontrol {Build & Run} > \uicontrol Compile Output, and then select the
|
||||||
|
\uicontrol {Open pane when building} check box.
|
||||||
|
In the \uicontrol {Limit output to} field, you can specify the maximum
|
||||||
|
amount of build output lines to display in the pane.
|
||||||
|
|
||||||
|
You can also reach the options page by clicking the \uicontrol {Open Settings Page}
|
||||||
|
button.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\section1 To-Do Entries
|
||||||
|
|
||||||
|
The \uicontrol {To-Do Entries} pane lists the BUG, FIXME, NOTE, TODO, and
|
||||||
|
WARNING keywords from the current file, from all project files, or from a
|
||||||
|
subproject. Click the icons on the toolbar to show only the selected
|
||||||
|
keywords.
|
||||||
|
|
||||||
|
\image qtcreator-todo-pane.png
|
||||||
|
|
||||||
|
To add keywords, select \uicontrol Tools > \uicontrol Options >
|
||||||
|
\uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color
|
||||||
|
for the keyword.
|
||||||
|
|
||||||
|
\image qtcreator-todo-options.png
|
||||||
|
|
||||||
|
To change the icon and line background color of the selected keyword, select
|
||||||
|
\uicontrol Edit.
|
||||||
|
|
||||||
|
To remove the selected keyword, select \uicontrol Remove.
|
||||||
|
|
||||||
|
To reset the list to predefined keywords, select \uicontrol Reset. All your
|
||||||
|
changes will be permanently lost.
|
||||||
|
|
||||||
|
To determine whether the keywords in the whole project, in the current file,
|
||||||
|
or in a subproject are displayed by default, select the appropriate option
|
||||||
|
in the \uicontrol {Scanning scope} group.
|
||||||
|
|
||||||
|
To exclude files from scanning, select \uicontrol {Project Settings} >
|
||||||
|
\uicontrol {To-Do} in the
|
||||||
|
\uicontrol Projects mode. Select \uicontrol Add and enter a regular
|
||||||
|
expression that matches the path to files to exclude. Use a forward slash
|
||||||
|
(/) as a separator in the path also on Windows.
|
||||||
|
|
||||||
|
The Todo plugin is disabled by default. To enable the plugin, select
|
||||||
|
\uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities >
|
||||||
|
\uicontrol Todo and restart
|
||||||
|
\QC.
|
||||||
|
|
||||||
|
In addition, you can open task list files generated by code scanning and
|
||||||
|
analysis tools in the \uicontrol Issues pane. For more information, see
|
||||||
|
\l{Showing Task List Files in Issues Pane}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\section1 Changing Languages
|
||||||
|
|
||||||
|
\QC has been localized into several languages. If the system language is one
|
||||||
|
of the supported languages, it is automatically selected. To change the
|
||||||
|
language, select \uicontrol {Tools > Options > Environment} and select a language
|
||||||
|
in the \uicontrol Language field. The change takes effect after you restart \QC.
|
||||||
|
|
||||||
|
\section1 Viewing Images
|
||||||
|
|
||||||
|
\QC opens image files in the image viewer.
|
||||||
|
|
||||||
|
\image qtcreator-image-viewer.png "Image viewer"
|
||||||
|
|
||||||
|
Use the toolbar buttons (1) or \l{Keyboard Shortcuts}{keyboard shortcuts}
|
||||||
|
to:
|
||||||
|
|
||||||
|
\list
|
||||||
|
|
||||||
|
\li Export SVG images to pixmaps
|
||||||
|
|
||||||
|
\li Switch between background and outline modes
|
||||||
|
|
||||||
|
\li Zoom in and out
|
||||||
|
|
||||||
|
\li Fit images to screen
|
||||||
|
|
||||||
|
\li Return to original size
|
||||||
|
|
||||||
|
\li Play and pause animated GIF and MNG images
|
||||||
|
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
\section1 Exporting SVG Images
|
||||||
|
|
||||||
|
If you receive a freely scalable icon in the SVG format from an UI designer,
|
||||||
|
you can export it to several images of different sizes to create a set of
|
||||||
|
pixmaps. You can then use QIcon::addPixmap() to add the pixmaps to icons in
|
||||||
|
different modes and states.
|
||||||
|
*/
|
||||||
|
@@ -133,7 +133,7 @@
|
|||||||
\section1 Forwarding Flags to Clang Code Model
|
\section1 Forwarding Flags to Clang Code Model
|
||||||
|
|
||||||
The \c {.cxxflags} and \c {.cflags} files contain command line flags for the
|
The \c {.cxxflags} and \c {.cflags} files contain command line flags for the
|
||||||
Clang code model, one flag per line.
|
Clang code model on a single line.
|
||||||
|
|
||||||
For example, specify the \c {-std=c++11} to set the language version
|
For example, specify the \c {-std=c++11} to set the language version
|
||||||
for parsing as C++11.
|
for parsing as C++11.
|
||||||
|
@@ -35,6 +35,11 @@
|
|||||||
\list
|
\list
|
||||||
\li \l{IDE Overview}
|
\li \l{IDE Overview}
|
||||||
\li \l{User Interface}
|
\li \l{User Interface}
|
||||||
|
\list
|
||||||
|
\li \l{Selecting Modes}
|
||||||
|
\li \l{Browsing Project Contents}
|
||||||
|
\li \l{Viewing Output}
|
||||||
|
\endlist
|
||||||
\li \l{Configuring Qt Creator}
|
\li \l{Configuring Qt Creator}
|
||||||
\li \l{Building and Running an Example}
|
\li \l{Building and Running an Example}
|
||||||
\li \l{Tutorials}
|
\li \l{Tutorials}
|
||||||
@@ -86,7 +91,6 @@
|
|||||||
\li \l{Developing Qt Quick Applications}
|
\li \l{Developing Qt Quick Applications}
|
||||||
\list
|
\list
|
||||||
\li \l {Creating Qt Quick Projects}
|
\li \l {Creating Qt Quick Projects}
|
||||||
\li \l {Qt Quick UI Forms}
|
|
||||||
\li \l {Editing QML Files in Design Mode}
|
\li \l {Editing QML Files in Design Mode}
|
||||||
\li \l {Creating Components}
|
\li \l {Creating Components}
|
||||||
\list
|
\list
|
||||||
@@ -95,7 +99,7 @@
|
|||||||
\endlist
|
\endlist
|
||||||
\li \l {Managing Item Hierarchy}
|
\li \l {Managing Item Hierarchy}
|
||||||
\li \l {Specifying Item Properties}
|
\li \l {Specifying Item Properties}
|
||||||
\li \l {Editing PathView Properties}
|
\li \l {Creating Animations}
|
||||||
\li \l {Adding Connections}
|
\li \l {Adding Connections}
|
||||||
\list
|
\list
|
||||||
\li \l{Connecting Objects to Signals}
|
\li \l{Connecting Objects to Signals}
|
||||||
@@ -104,7 +108,9 @@
|
|||||||
\li \l{Managing C++ Backend Objects}
|
\li \l{Managing C++ Backend Objects}
|
||||||
\endlist
|
\endlist
|
||||||
\li \l {Adding States}
|
\li \l {Adding States}
|
||||||
|
\li \l {Editing PathView Properties}
|
||||||
\li \l {Browsing ISO 7000 Icons}
|
\li \l {Browsing ISO 7000 Icons}
|
||||||
|
\li \l {Qt Quick UI Forms}
|
||||||
\li \l {Exporting Designs from Graphics Software}
|
\li \l {Exporting Designs from Graphics Software}
|
||||||
\li \l {Using QML Modules with Plugins}
|
\li \l {Using QML Modules with Plugins}
|
||||||
\li \l {Converting UI Projects to Applications}
|
\li \l {Converting UI Projects to Applications}
|
||||||
|
@@ -100,7 +100,7 @@
|
|||||||
to reference the rectangle from other places.
|
to reference the rectangle from other places.
|
||||||
|
|
||||||
\li Select the \uicontrol Layout tab, and then click
|
\li Select the \uicontrol Layout tab, and then click
|
||||||
the \inlineimage anchor_fill.png
|
the \inlineimage anchor-fill.png
|
||||||
(\uicontrol {Fill to Parent}) button to anchor the rectangle
|
(\uicontrol {Fill to Parent}) button to anchor the rectangle
|
||||||
to the item.
|
to the item.
|
||||||
|
|
||||||
|
@@ -32,72 +32,137 @@
|
|||||||
/*!
|
/*!
|
||||||
|
|
||||||
\contentspage index.html
|
\contentspage index.html
|
||||||
\previouspage creator-design-mode.html
|
|
||||||
\page creator-visual-editor.html
|
\page creator-visual-editor.html
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
\previouspage quick-converting-ui-projects.html
|
||||||
|
\nextpage quick-components.html
|
||||||
|
\else
|
||||||
|
\previouspage creator-design-mode.html
|
||||||
\nextpage quick-projects.html
|
\nextpage quick-projects.html
|
||||||
|
\endif
|
||||||
|
|
||||||
\title Developing Qt Quick Applications
|
\title Developing Qt Quick Applications
|
||||||
|
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
When you install \QDS, everything you'll need to design UIs
|
||||||
|
using \l{Qt Quick} and to preview them on the desktop or on Android or
|
||||||
|
embedded Linux devices is automatically installed and configured correctly
|
||||||
|
for you.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
Qt Quick enables you to build UIs around the behavior of
|
||||||
|
\e components and how they connect with one another. You
|
||||||
|
create components using Qt Quick and QML types that are available in
|
||||||
|
the Design mode. You can specify values for the \e properties of a
|
||||||
|
component to change its appearance and behavior. All QML types have a
|
||||||
|
set of predefined properties, some of which control things that are
|
||||||
|
visible to users, while others are used behind the scene.
|
||||||
|
|
||||||
|
While it is useful to learn the basics of Qt Quick, you can also rely on
|
||||||
|
\QDS to write the code for you when you drag-and-drop the ready-made
|
||||||
|
components to the working area and change them to your liking by modifying
|
||||||
|
their properties in the Design mode. You can always check up details in
|
||||||
|
the extensive Qt Quick documentation by pressing \key F1.
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
\li \l {Creating Qt Quick Projects}
|
\li \l {Creating Qt Quick Projects}
|
||||||
|
|
||||||
You can use wizards to create Qt Quick projects.
|
You can use wizards to create Qt Quick projects.
|
||||||
|
|
||||||
|
\li \l {Editing QML Files in Design Mode}
|
||||||
|
|
||||||
|
You can use the \uicontrol {Form Editor} or the
|
||||||
|
\uicontrol {Text Editor} in the Design mode to
|
||||||
|
develop Qt Quick applications.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \l {Creating Components}
|
||||||
|
|
||||||
|
In addition to your imported artwork, you can use the Design
|
||||||
|
mode to customize ready-made components or design any custom form
|
||||||
|
and shape directly as QML types. You can import visual assets in
|
||||||
|
various formats, such as PNG, JPG, and SVG for use in the
|
||||||
|
components.
|
||||||
|
|
||||||
|
\li \l {Managing Item Hierarchy}
|
||||||
|
|
||||||
|
You can manage the items in the current QML file and their
|
||||||
|
relationships in the \uicontrol Navigator.
|
||||||
|
|
||||||
|
\li \l {Specifying Item Properties}
|
||||||
|
|
||||||
|
You can specify values for the properties of a component to change
|
||||||
|
its appearance and behavior. All QML types have a set of predefined
|
||||||
|
properties. Some properties, such as position, size, and visibility,
|
||||||
|
are common to all QML types, whereas others are specific to the QML
|
||||||
|
type. You can specify properties for your components in the
|
||||||
|
\uicontrol Properties pane.
|
||||||
|
|
||||||
|
\li \l {Creating Animations}
|
||||||
|
|
||||||
|
You can use a timeline and keyframe based editor in the
|
||||||
|
\uicontrol Timeline view to animate the properties of UI
|
||||||
|
components. Animating properties enables their values to
|
||||||
|
move through intermediate values at specified keyframes
|
||||||
|
instead of immediately changing to the target value.
|
||||||
|
|
||||||
|
\li \l {Adding Connections}
|
||||||
|
|
||||||
|
You can create connections between the UI components and
|
||||||
|
the application to enable them to communicate with each other. For
|
||||||
|
example, how does the appearance of a button change on a mouse click
|
||||||
|
and which action does the application need to perform in response to
|
||||||
|
it.
|
||||||
|
|
||||||
|
You can also create connections between UI components by
|
||||||
|
binding their properties together. This way, when the value of a
|
||||||
|
property changes in a parent component, it can be automatically
|
||||||
|
changed in all the child components, for example.
|
||||||
|
|
||||||
|
\li \l {Adding States}
|
||||||
|
|
||||||
|
Qt Quick allows you to declare various UI states that describe
|
||||||
|
how component properties change from a base state. Therefore,
|
||||||
|
states can be a useful way of organizing your UI
|
||||||
|
logic. You can associate transitions with items to define
|
||||||
|
how their properties will animate when they change due to a state
|
||||||
|
change.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
\section1 Related Topics
|
||||||
|
|
||||||
|
\list
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
\li \l {Using Custom Fonts}
|
||||||
|
|
||||||
|
You can load custom fonts to \QDS and use them in your designs.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\li \l {Editing PathView Properties}
|
||||||
|
|
||||||
|
You can use a graphical spline editor to specify \l{PathView} paths.
|
||||||
|
A path view lays out data provided by data models on a \l{Path}.
|
||||||
|
|
||||||
|
\li \l {Browsing ISO 7000 Icons}
|
||||||
|
|
||||||
|
You can add ISO 7000 icons from a library delivered with \QC to
|
||||||
|
UIs and change their color.
|
||||||
|
|
||||||
\li \l{Qt Quick UI Forms}
|
\li \l{Qt Quick UI Forms}
|
||||||
|
|
||||||
Some of the wizards create Qt Quick projects that contain UI forms
|
Some of the wizards create Qt Quick projects that contain UI forms
|
||||||
(.ui.qml files). The forms use a purely declarative subset of the
|
(.ui.qml files). The forms use a purely declarative subset of the
|
||||||
QML language and you can edit them in the Design mode.
|
QML language and you can edit them in the Design mode.
|
||||||
|
|
||||||
\li \l {Editing QML Files in Design Mode}
|
\if defined(qtcreator)
|
||||||
|
|
||||||
You can use the \uicontrol {Form Editor} or the
|
|
||||||
\uicontrol {Text Editor} in the Design mode to
|
|
||||||
develop Qt Quick applications.
|
|
||||||
|
|
||||||
\li \l {Creating Components}
|
|
||||||
|
|
||||||
You can use basic QML types to create your own components that you
|
|
||||||
can combine with ready-made Qt Quick Controls and Layouts
|
|
||||||
(available since Qt 5.7).
|
|
||||||
|
|
||||||
\li \l {Managing Item Hierarchy}
|
|
||||||
|
|
||||||
You can manage the items in the current QML file and their
|
|
||||||
relationships in the \uicontrol Navigator.
|
|
||||||
|
|
||||||
\li \l {Specifying Item Properties}
|
|
||||||
|
|
||||||
You can specify properties for your components in the
|
|
||||||
\uicontrol Properties pane.
|
|
||||||
|
|
||||||
\li \l {Editing PathView Properties}
|
|
||||||
|
|
||||||
You can use a graphical spline editor to specify \l{PathView} paths.
|
|
||||||
A path view lays out data provided by data models on a \l{Path}.
|
|
||||||
|
|
||||||
\li \l {Adding Connections}
|
|
||||||
|
|
||||||
You can connect objects to signals, specify dynamic properties for
|
|
||||||
objects, and create bindings between the properties of two objects.
|
|
||||||
|
|
||||||
\li \l {Adding States}
|
|
||||||
|
|
||||||
You can use states to describe user interface configurations, such
|
|
||||||
as the UI controls, their properties and behavior, and the available
|
|
||||||
actions.
|
|
||||||
|
|
||||||
\li \l {Browsing ISO 7000 Icons}
|
|
||||||
|
|
||||||
You can add ISO 7000 icons from a library delivered with \QC to Qt
|
|
||||||
Quick applications and change their color (commercial only).
|
|
||||||
|
|
||||||
\li \l {Exporting Designs from Graphics Software}
|
\li \l {Exporting Designs from Graphics Software}
|
||||||
|
|
||||||
You can export designs from graphics software, such as Adobe
|
You can export designs from graphics software, such as Adobe
|
||||||
Photoshop and GIMP, to QML files. You can then edit QML files in
|
Photoshop and GIMP, to QML files. You can then edit QML files in
|
||||||
\QC.
|
\QC.
|
||||||
|
|
||||||
\li \l {Using QML Modules with Plugins}
|
\li \l {Using QML Modules with Plugins}
|
||||||
|
|
||||||
QML modules may use plugins to expose components defined in C++ to
|
QML modules may use plugins to expose components defined in C++ to
|
||||||
@@ -105,12 +170,14 @@
|
|||||||
details of the contained components, and therefore, the modules must
|
details of the contained components, and therefore, the modules must
|
||||||
provide extra type information for code completion and the semantic
|
provide extra type information for code completion and the semantic
|
||||||
checks to work correctly.
|
checks to work correctly.
|
||||||
|
|
||||||
\li \l {Converting UI Projects to Applications}
|
\li \l {Converting UI Projects to Applications}
|
||||||
|
|
||||||
Qt Quick UI projects (.qmlproject) are useful for creating user
|
Qt Quick UI projects (.qmlproject) are useful for creating user
|
||||||
interfaces. To use them for application development, you have to
|
interfaces. To use them for application development, you have to
|
||||||
convert them to Qt Quick Application projects that contain .pro,
|
convert them to Qt Quick Application projects that contain .pro,
|
||||||
.cpp, and .qrc files.
|
.cpp, and .qrc files.
|
||||||
|
\endif
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
|
@@ -58,7 +58,7 @@
|
|||||||
\section1 Creating the Main View
|
\section1 Creating the Main View
|
||||||
|
|
||||||
The main view of the application displays a Qt logo in the top left corner
|
The main view of the application displays a Qt logo in the top left corner
|
||||||
of the screen and two empty rectangles.
|
of the view and two empty rectangles.
|
||||||
|
|
||||||
To use the \e qt-logo.png image in your application, you must copy it from
|
To use the \e qt-logo.png image in your application, you must copy it from
|
||||||
the Qt examples directory to the project directory (same subdirectory as
|
the Qt examples directory to the project directory (same subdirectory as
|
||||||
@@ -117,22 +117,24 @@
|
|||||||
\li In the \uicontrol {Border color} field, set the border color to
|
\li In the \uicontrol {Border color} field, set the border color to
|
||||||
\e #808080.
|
\e #808080.
|
||||||
|
|
||||||
\li Click \uicontrol {Layout}, and then click the top and left
|
\li Click \uicontrol {Layout}, and then click the
|
||||||
anchor buttons to anchor the rectangle to the top left corner of
|
\inlineimage anchor-top.png
|
||||||
the page.
|
(\uicontrol Top) and \inlineimage anchor-left.png
|
||||||
|
(\uicontrol Left) anchor buttons to anchor the
|
||||||
\image qmldesigner-tutorial-topleftrect-layout.png "Layout tab"
|
rectangle to the top left corner of the page.
|
||||||
|
|
||||||
\li In the \uicontrol Margin field, select \e 20 for the top anchor
|
\li In the \uicontrol Margin field, select \e 20 for the top anchor
|
||||||
and \e 10 for the left anchor.
|
and \e 10 for the left anchor.
|
||||||
|
|
||||||
|
\image qmldesigner-tutorial-topleftrect-layout.png "Anchor margins"
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\li Drag and drop a \uicontrol {Mouse Area} type from the
|
\li Drag and drop a \uicontrol {Mouse Area} type from the
|
||||||
\uicontrol Library to \e topLeftRect in the navigator.
|
\uicontrol Library to \e topLeftRect in the navigator.
|
||||||
|
|
||||||
\li Click \uicontrol {Layout}, and then click the
|
\li Click \uicontrol {Layout}, and then click the
|
||||||
\inlineimage anchor_fill.png
|
\inlineimage anchor-fill.png
|
||||||
(\uicontrol {Fill to Parent}) button to anchor the mouse area to the
|
(\uicontrol {Fill to Parent}) button to anchor the mouse area to the
|
||||||
rectangle.
|
rectangle.
|
||||||
|
|
||||||
@@ -147,9 +149,12 @@
|
|||||||
|
|
||||||
\li In the \uicontrol Id field, enter \e middleRightRect.
|
\li In the \uicontrol Id field, enter \e middleRightRect.
|
||||||
|
|
||||||
\li In \uicontrol {Layout}, select the vertical center anchor button and
|
\li In \uicontrol {Layout}, select the
|
||||||
then the right anchor button to
|
\inlineimage anchor-vertical-center.png
|
||||||
anchor the rectangle to the middle right margin of the screen.
|
(\uicontrol {Vertical Center} anchor button and then the
|
||||||
|
\inlineimage anchor-right.png
|
||||||
|
(\uicontrol Right) anchor button to anchor the rectangle
|
||||||
|
to the middle right margin of its parent.
|
||||||
|
|
||||||
\li In the \uicontrol Margin field, select \e 10 for the right
|
\li In the \uicontrol Margin field, select \e 10 for the right
|
||||||
anchor and \e 0 for the vertical center anchor.
|
anchor and \e 0 for the vertical center anchor.
|
||||||
@@ -162,8 +167,11 @@
|
|||||||
|
|
||||||
\li In the \uicontrol Id field, enter \e bottomLeftRect.
|
\li In the \uicontrol Id field, enter \e bottomLeftRect.
|
||||||
|
|
||||||
\li In \uicontrol {Layout}, select the bottom and left anchor buttons to
|
\li In \uicontrol {Layout}, select the
|
||||||
anchor the rectangle to the bottom left margin of the screen.
|
\inlineimage anchor-bottom.png
|
||||||
|
(\uicontrol Bottom) and \inlineimage anchor-left.png
|
||||||
|
(\uicontrol Left) anchor buttons to anchor the rectangle
|
||||||
|
to the bottom left margin of its parent.
|
||||||
|
|
||||||
\li In the \uicontrol Margin field, select \e 20 for the bottom
|
\li In the \uicontrol Margin field, select \e 20 for the bottom
|
||||||
anchor and \e 10 for the left anchor.
|
anchor and \e 10 for the left anchor.
|
||||||
|
@@ -242,7 +242,7 @@
|
|||||||
files in the project folder belong to the project. Therefore, you do
|
files in the project folder belong to the project. Therefore, you do
|
||||||
not need to individually list all the files in the project.
|
not need to individually list all the files in the project.
|
||||||
|
|
||||||
\li .qml file defines an UI item, such as a component, screen, or the
|
\li .qml file defines an UI item, such as a component or the
|
||||||
whole application UI.
|
whole application UI.
|
||||||
|
|
||||||
\li ui.qml file defines a form for the application UI. This file is
|
\li ui.qml file defines a form for the application UI. This file is
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2018 The Qt Company Ltd.
|
** Copyright (C) 2019 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
/*!
|
/*!
|
||||||
|
|
||||||
\contentspage index.html
|
\contentspage index.html
|
||||||
\previouspage qtquick-iso-icon-browser.html
|
\previouspage creator-quick-ui-forms.html
|
||||||
\page quick-export-to-qml.html
|
\page quick-export-to-qml.html
|
||||||
\nextpage creator-qml-modules-with-plugins.html
|
\nextpage creator-qml-modules-with-plugins.html
|
||||||
|
|
||||||
|
@@ -76,7 +76,7 @@
|
|||||||
the rectangle and produce rounded corners for the button.
|
the rectangle and produce rounded corners for the button.
|
||||||
|
|
||||||
\li Select \uicontrol {Layout}, and then select the
|
\li Select \uicontrol {Layout}, and then select the
|
||||||
\inlineimage anchor_fill.png
|
\inlineimage anchor-fill.png
|
||||||
(\uicontrol {Fill to Parent}) button to anchor the rectangle to
|
(\uicontrol {Fill to Parent}) button to anchor the rectangle to
|
||||||
the item.
|
the item.
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
for example button_up.png.
|
for example button_up.png.
|
||||||
|
|
||||||
\li Click \uicontrol {Layout}, and then click the
|
\li Click \uicontrol {Layout}, and then click the
|
||||||
\inlineimage anchor_fill.png
|
\inlineimage anchor-fill.png
|
||||||
(\uicontrol {Fill to Parent}) button to anchor the border image to the
|
(\uicontrol {Fill to Parent}) button to anchor the border image to the
|
||||||
\uicontrol Item.
|
\uicontrol Item.
|
||||||
|
|
||||||
@@ -258,12 +258,11 @@
|
|||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\li Click \uicontrol {Layout}, and then click the
|
\li Click \uicontrol {Layout}, and then click the
|
||||||
\inlineimage anchor_vertical.png
|
\inlineimage anchor-vertical-center.png
|
||||||
(\uicontrol {Set Vertical Anchor}) and
|
(\uicontrol {Vertical Center}) and
|
||||||
\inlineimage anchor_horizontal.png
|
\inlineimage anchor-horizontal-center.png
|
||||||
(\uicontrol {Set Horizontal Anchor})
|
(\uicontrol {Horizontal Center}) buttons to inherit the
|
||||||
buttons to inherit the vertical and horizontal centering from
|
vertical and horizontal centering from the parent.
|
||||||
the parent.
|
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
|
@@ -142,14 +142,14 @@
|
|||||||
\l{SwipeDelegate}{Swipe Delegate} delegate components are also available
|
\l{SwipeDelegate}{Swipe Delegate} delegate components are also available
|
||||||
in the \uicontrol Library.
|
in the \uicontrol Library.
|
||||||
|
|
||||||
\section1 Positioning Items on Screens
|
\section1 Positioning Items in UIs
|
||||||
|
|
||||||
The position of an item on the canvas can be either absolute or relative
|
The position of an item in the UI can be either absolute or
|
||||||
to other items. If you are designing a static user interface,
|
relative to other items. If you are designing a static UI,
|
||||||
\l{Important Concepts In Qt Quick - Positioning#manual-positioning}
|
\l{Important Concepts In Qt Quick - Positioning#manual-positioning}
|
||||||
{manual positioning} provides the most efficient form of positioning items
|
{manual positioning} provides the most efficient form of positioning
|
||||||
on the screen. For a dynamic user interface, you can employ the following
|
items. For a dynamic UI, you can employ the following positioning
|
||||||
positioning methods provided by Qt Quick:
|
methods provided by Qt Quick:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li \l{Setting Bindings}
|
\li \l{Setting Bindings}
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
|
|
||||||
\image qmldesigner-anchor-buttons.png "Anchor buttons"
|
\image qmldesigner-anchor-buttons.png "Anchor buttons"
|
||||||
|
|
||||||
For convenience, you can click the \inlineimage anchor_fill.png
|
For convenience, you can click the \inlineimage anchor-fill.png
|
||||||
(\uicontrol {Fill to Parent}) toolbar button to apply fill anchors to an
|
(\uicontrol {Fill to Parent}) toolbar button to apply fill anchors to an
|
||||||
item and the \inlineimage qtcreator-anchors-reset-icon.png
|
item and the \inlineimage qtcreator-anchors-reset-icon.png
|
||||||
(\uicontrol {Reset Anchors}) button to reset the anchors to their saved
|
(\uicontrol {Reset Anchors}) button to reset the anchors to their saved
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
the layout managers used with standard Qt widgets, except that they are
|
the layout managers used with standard Qt widgets, except that they are
|
||||||
also containers in their own right.
|
also containers in their own right.
|
||||||
|
|
||||||
You can use the following positioners to arrange items on screens:
|
You can use the following positioners to arrange items in UIs:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li \l[QML] {Column} arranges its child items vertically.
|
\li \l[QML] {Column} arranges its child items vertically.
|
||||||
@@ -283,11 +283,11 @@
|
|||||||
\section2 Using Layouts
|
\section2 Using Layouts
|
||||||
|
|
||||||
Since Qt 5.1, you can use QML types in the \l{qtquicklayouts-index.html}
|
Since Qt 5.1, you can use QML types in the \l{qtquicklayouts-index.html}
|
||||||
{Qt Quick Layouts} module to arrange Qt Quick items on screens. Unlike
|
{Qt Quick Layouts} module to arrange Qt Quick items in UIs. Unlike
|
||||||
positioners, they manage both the positions and sizes of items in a
|
positioners, they manage both the positions and sizes of items in a
|
||||||
declarative interface. They are well suited for resizable user interfaces.
|
declarative interface. They are well suited for resizable UIs.
|
||||||
|
|
||||||
You can use the following layout types to arrange items on screens:
|
You can use the following layout types to arrange items in UIs:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li \l{Layout} provides attached properties for items pushed onto a
|
\li \l{Layout} provides attached properties for items pushed onto a
|
||||||
@@ -337,7 +337,7 @@
|
|||||||
\section2 Organizing Items
|
\section2 Organizing Items
|
||||||
|
|
||||||
Since Qt 5.7, you can use the following \l{Qt Quick Controls} types to
|
Since Qt 5.7, you can use the following \l{Qt Quick Controls} types to
|
||||||
organize items on screens:
|
organize items in UIs:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li \l [QtQuickControls]{Frame} places a logical group of controls
|
\li \l [QtQuickControls]{Frame} places a logical group of controls
|
||||||
@@ -357,7 +357,7 @@
|
|||||||
\section1 Adding User Interaction Methods
|
\section1 Adding User Interaction Methods
|
||||||
|
|
||||||
You can use the following QML types to add basic interaction methods to
|
You can use the following QML types to add basic interaction methods to
|
||||||
screens:
|
UIs:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li \l{Flickable}
|
\li \l{Flickable}
|
||||||
@@ -441,7 +441,7 @@
|
|||||||
\section1 History of Qt Quick Controls
|
\section1 History of Qt Quick Controls
|
||||||
|
|
||||||
In Qt 4, ready-made Qt Quick 1 Components were provided for creating
|
In Qt 4, ready-made Qt Quick 1 Components were provided for creating
|
||||||
screens with a native look and feel for a particular target platform.
|
UIs with a native look and feel for a particular target platform.
|
||||||
In Qt 5.1, Qt Quick Controls, Dialogs, and Layouts were added for
|
In Qt 5.1, Qt Quick Controls, Dialogs, and Layouts were added for
|
||||||
creating classic desktop-style user interfaces using Qt Quick 2.1. The
|
creating classic desktop-style user interfaces using Qt Quick 2.1. The
|
||||||
Qt Quick Controls Styles could be used to customize Qt Quick Controls.
|
Qt Quick Controls Styles could be used to customize Qt Quick Controls.
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
\contentspage index.html
|
\contentspage index.html
|
||||||
\page creator-using-qt-quick-designer.html
|
\page creator-using-qt-quick-designer.html
|
||||||
\if defined(qtdesignstudio)
|
\if defined(qtdesignstudio)
|
||||||
\previouspage creator-quick-tour.html
|
\previouspage creator-modes.html
|
||||||
\nextpage {Tutorials}
|
\nextpage {Tutorials}
|
||||||
\else
|
\else
|
||||||
\previouspage creator-quick-ui-forms.html
|
\previouspage creator-quick-ui-forms.html
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
|
|
||||||
The width and height of the root item in a QML file determine the size of
|
The width and height of the root item in a QML file determine the size of
|
||||||
the component. You can reuse components, such as buttons, in different
|
the component. You can reuse components, such as buttons, in different
|
||||||
sizes in other QML files and design screens for use with different device
|
sizes in other QML files and design UIs for use with different device
|
||||||
profiles, screen resolution, or screen orientation. The component size
|
profiles, screen resolution, or screen orientation. The component size
|
||||||
might also be zero (0,0) if its final size is determined by property
|
might also be zero (0,0) if its final size is determined by property
|
||||||
bindings.
|
bindings.
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2018 The Qt Company Ltd.
|
** Copyright (C) 2019 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -28,11 +28,10 @@
|
|||||||
\page qmldesigner-pathview-editor.html
|
\page qmldesigner-pathview-editor.html
|
||||||
\if defined(qtdesignstudio)
|
\if defined(qtdesignstudio)
|
||||||
\previouspage studio-fonts.html
|
\previouspage studio-fonts.html
|
||||||
\nextpage qtquick-iso-icon-browser.html
|
|
||||||
\else
|
\else
|
||||||
\previouspage qtquick-properties.html
|
\previouspage quick-states.html
|
||||||
\nextpage qmldesigner-connections.html
|
|
||||||
\endif
|
\endif
|
||||||
|
\nextpage qtquick-iso-icon-browser.html
|
||||||
|
|
||||||
\title Editing PathView Properties
|
\title Editing PathView Properties
|
||||||
|
|
||||||
|
@@ -27,11 +27,7 @@
|
|||||||
\contentspage {Qt Creator Manual}
|
\contentspage {Qt Creator Manual}
|
||||||
\page qtquick-properties.html
|
\page qtquick-properties.html
|
||||||
\previouspage qtquick-navigator.html
|
\previouspage qtquick-navigator.html
|
||||||
\if defined(qtdesignstudio)
|
|
||||||
\nextpage studio-timeline.html
|
\nextpage studio-timeline.html
|
||||||
\else
|
|
||||||
\nextpage qmldesigner-pathview-editor.html
|
|
||||||
\endif
|
|
||||||
|
|
||||||
\title Specifying Item Properties
|
\title Specifying Item Properties
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
\nextpage studio-fonts.html
|
\nextpage studio-fonts.html
|
||||||
\else
|
\else
|
||||||
\previouspage quick-connections-backend.html
|
\previouspage quick-connections-backend.html
|
||||||
\nextpage qtquick-iso-icon-browser.html
|
\nextpage qmldesigner-pathview-editor.html
|
||||||
\endif
|
\endif
|
||||||
|
|
||||||
\title Adding States
|
\title Adding States
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
\li Start, stop or pause animations.
|
\li Start, stop or pause animations.
|
||||||
\li Execute some script required in the new state.
|
\li Execute some script required in the new state.
|
||||||
\li Change a property value for a particular item.
|
\li Change a property value for a particular item.
|
||||||
\li Show a different view or screen.
|
\li Show a different view.
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
The \uicontrol States pane displays the different \l{State}{states}
|
The \uicontrol States pane displays the different \l{State}{states}
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
To add states, click the \inlineimage plus.png
|
To add states, click the \inlineimage plus.png
|
||||||
button. Then modify the new state in the editor. For example, to change the
|
button. Then modify the new state in the editor. For example, to change the
|
||||||
appearance of a button, you can hide the button image and show another image
|
appearance of a button, you can hide the button image and show another image
|
||||||
in its place. Or, to add movement to the screen, you can change the position
|
in its place. Or, to add movement to the view, you can change the position
|
||||||
of an object on the canvas and then add animation to the change between the
|
of an object on the canvas and then add animation to the change between the
|
||||||
states.
|
states.
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
QML states typically describe user interface configurations, such as the UI
|
QML states typically describe user interface configurations, such as the UI
|
||||||
controls, their properties and behavior and the available actions. For
|
controls, their properties and behavior and the available actions. For
|
||||||
example, you can use states to create two screens.
|
example, you can use states to create two views.
|
||||||
|
|
||||||
To add states, click the empty slot in the \uicontrol States pane.
|
To add states, click the empty slot in the \uicontrol States pane.
|
||||||
Then modify the new state in the \uicontrol {Form Editor} or the
|
Then modify the new state in the \uicontrol {Form Editor} or the
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
This allows you to:
|
This allows you to:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li Align items on different screens with each other.
|
\li Align items on different views with each other.
|
||||||
\li Avoid excessive property changes. If an item is invisible in the
|
\li Avoid excessive property changes. If an item is invisible in the
|
||||||
base state, you must define all changes to its child types as
|
base state, you must define all changes to its child types as
|
||||||
property changes, which leads to complicated QML code.
|
property changes, which leads to complicated QML code.
|
||||||
@@ -116,13 +116,13 @@
|
|||||||
states.
|
states.
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
To create screens for an application by using states:
|
To create views for an application by using states:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li In the base state, add all items you will need in the application
|
\li In the base state, add all items you will need in the application
|
||||||
(1). While you work on one screen, you can click the
|
(1). While you work on one view, you can click the
|
||||||
\inlineimage eye_open.png
|
\inlineimage eye_open.png
|
||||||
icon to hide items on the canvas that are not part of a screen.
|
icon to hide items on the canvas that are not part of a view.
|
||||||
\li In the \uicontrol States pane, click the empty slot to create a
|
\li In the \uicontrol States pane, click the empty slot to create a
|
||||||
new state and give it a name. For example, \c Normal.
|
new state and give it a name. For example, \c Normal.
|
||||||
\li In the \uicontrol Properties pane (2), deselect the
|
\li In the \uicontrol Properties pane (2), deselect the
|
||||||
@@ -130,9 +130,9 @@
|
|||||||
for each item that is not needed in this view. If you specify
|
for each item that is not needed in this view. If you specify
|
||||||
the setting for the parent item, all child items inherit it and
|
the setting for the parent item, all child items inherit it and
|
||||||
are also hidden.
|
are also hidden.
|
||||||
\image qmldesigner-screen-design.png "Designing screens"
|
\image qmldesigner-screen-design.png "Designing views"
|
||||||
\li Create additional states for each screen and set the visibility
|
\li Create additional states for each view and set the visibility
|
||||||
or opacity of the items in the screen.
|
or opacity of the items in the view.
|
||||||
\li To determine which view opens when the application starts, use the
|
\li To determine which view opens when the application starts, use the
|
||||||
\uicontrol {Text Editor} to set the state of the root item of the
|
\uicontrol {Text Editor} to set the state of the root item of the
|
||||||
.qml file, as specified by the following code snippet:
|
.qml file, as specified by the following code snippet:
|
||||||
|
322
doc/src/qtquick/qtquick-timeline.qdoc
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2019 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Creator documentation.
|
||||||
|
**
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and The Qt Company. For licensing terms
|
||||||
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||||
|
** information use the contact form at https://www.qt.io/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Free Documentation License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Free
|
||||||
|
** Documentation License version 1.3 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file included in the packaging of
|
||||||
|
** this file. Please review the following information to ensure
|
||||||
|
** the GNU Free Documentation License version 1.3 requirements
|
||||||
|
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage {Qt Design Studio Manual}
|
||||||
|
\previouspage qtquick-properties.html
|
||||||
|
\page studio-timeline.html
|
||||||
|
\nextpage qmldesigner-connections.html
|
||||||
|
|
||||||
|
\title Creating Animations
|
||||||
|
|
||||||
|
You can use the timeline and keyframe based editor in the
|
||||||
|
\uicontrol Timeline view to animate the properties of UI components.
|
||||||
|
Animating properties enables their values to move through intermediate
|
||||||
|
values instead of immediately changing to the target value. For example,
|
||||||
|
to move an item in a scene, you can animate the properties that control
|
||||||
|
the item's position, x and y, so that the item's position changes at
|
||||||
|
keyframes on the way to the target position. Similarly, you could change
|
||||||
|
the color and scale properties of the item at keyframes to make it appear
|
||||||
|
to move closer or farther away.
|
||||||
|
|
||||||
|
Qt Quick allows you to declare various UI states in \l State objects.
|
||||||
|
These states are comprised of property changes from a base state, and
|
||||||
|
can be a useful way of organizing your UI logic. Transitions are objects
|
||||||
|
you can associate with an item to define how its properties will animate
|
||||||
|
when they change due to a state change.
|
||||||
|
|
||||||
|
You can find a video tutorial about creating timelines and adding keyframes
|
||||||
|
\l{https://resources.qt.io/development-topic-ui-design/qtdesignstudio-clustertutorial-parttwo}
|
||||||
|
{here}.
|
||||||
|
|
||||||
|
\if defined(qtcreator)
|
||||||
|
\section1 Enabling the Timeline Editor
|
||||||
|
|
||||||
|
The \uicontrol Timeline view is not visible in \QC by default. To enable
|
||||||
|
it, select \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} >
|
||||||
|
\uicontrol {Qt Quick Designer} > \uicontrol {Enable Timeline editor}. You
|
||||||
|
need to restart \QC for the \uicontrol Timeline view to appear.
|
||||||
|
|
||||||
|
To be able to create timelines, you also need the Qt Quick Timeline module.
|
||||||
|
At the time of this writing, the module is not available as a library in
|
||||||
|
the Qt installer, and therefore you must check out the repository and build
|
||||||
|
the module yourself using the same Qt version that you used to build \QC.
|
||||||
|
|
||||||
|
You can check out the module from
|
||||||
|
\l{https://codereview.qt-project.org/#/admin/projects/qt/qtquicktimeline}
|
||||||
|
{Qt Code Review Tool}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\section1 Creating Timelines
|
||||||
|
|
||||||
|
You specify settings for the timeline and for running the animation in the
|
||||||
|
\uicontrol {Timeline Settings} dialog.
|
||||||
|
|
||||||
|
\image studio-timeline-settings.png "Timeline Settings dialog"
|
||||||
|
|
||||||
|
To create a timeline to animate a UI component:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li In the \uicontrol Navigator, select the item to animate.
|
||||||
|
\li Select the \uicontrol Timeline tab to open the \uicontrol Timeline
|
||||||
|
view.
|
||||||
|
\li Select the \inlineimage plus.png
|
||||||
|
(\uicontrol {Add Timeline (A)}) button, or press \key {A} to
|
||||||
|
specify settings for the timeline and running the animation
|
||||||
|
in the \uicontrol {Timeline Settings} dialog.
|
||||||
|
\li In the \uicontrol {Timeline ID} field, enter a name that describes
|
||||||
|
the animated item.
|
||||||
|
\li In the \uicontrol {End frame} field, set the duration of the
|
||||||
|
animation.
|
||||||
|
\li To use bindings to specify the properties, select the
|
||||||
|
\uicontrol {Expression binding} radio button and enter the binding
|
||||||
|
in the \uicontrol {Expression binding} field. For more information
|
||||||
|
about property binding, see \l{Setting Bindings}.
|
||||||
|
\li To create a timeline animation, select the \uicontrol Animation
|
||||||
|
radio button.
|
||||||
|
\li In the \uicontrol timelineAnimation tab, \uicontrol {Animation ID}
|
||||||
|
field, enter a name for the animation.
|
||||||
|
\li Select the \uicontrol {Running in Base State} check box to use the
|
||||||
|
settings in this tab when previewing the UI. Deselect the check box
|
||||||
|
to use the default settings.
|
||||||
|
\li In the \uicontrol {Start frame} field, set the first frame of the
|
||||||
|
animation.
|
||||||
|
\li In the \uicontrol {End frame} field, set the last frame of the
|
||||||
|
animation.
|
||||||
|
\li In the \uicontrol {Duration} field, set the length of the
|
||||||
|
animation from the start frame to the end frame. If you set a
|
||||||
|
shorter duration than the number of frames, frames are left out
|
||||||
|
from the end of the animation when viewing it.
|
||||||
|
\li Select the \uicontrol Continuous check box to loop the animation
|
||||||
|
indefinitely.
|
||||||
|
\li In the \uicontrol Loops field, select the number of times to run
|
||||||
|
the animation as a loop. The default number of loops is one, which
|
||||||
|
means that you must restart the animation to see it again
|
||||||
|
\li Select the \uicontrol {Ping pong} check box to play the animation
|
||||||
|
backwards back to the beginning when it reaches the end.
|
||||||
|
\li In the \uicontrol {Transitions to states} field, select the state
|
||||||
|
to switch to when the animation finishes.
|
||||||
|
\li Select \uicontrol Close to close the dialog and save the settings.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
To create additional timelines, select the \inlineimage plus.png
|
||||||
|
(\uicontrol {Add Timeline}) button next to the \uicontrol timeline tab.
|
||||||
|
|
||||||
|
To specify settings for running the timeline animations, select the
|
||||||
|
\inlineimage plus.png
|
||||||
|
(\uicontrol {Add Animation}) button next to the
|
||||||
|
\uicontrol {Animation Settings} group. For example, you could create
|
||||||
|
settings for running a part of the timeline animation between specified
|
||||||
|
frames or for running the animation backwards from the last frame to the
|
||||||
|
first.
|
||||||
|
|
||||||
|
To modify the settings, select the \inlineimage animation.png
|
||||||
|
(\uicontrol {Timeline Settings (S)}) button on the toolbar
|
||||||
|
(or press \key S) in the \uicontrol Timeline view.
|
||||||
|
|
||||||
|
\section2 Binding Animations to States
|
||||||
|
|
||||||
|
The table at the bottom of the \uicontrol {Timeline Settings} dialog lists
|
||||||
|
the available states. Double-click the values in the \uicontrol Timeline
|
||||||
|
and \uicontrol Animation column to bind the states to animations. In the
|
||||||
|
\uicontrol {Fixed Frame} column, you can bind the states that don't have
|
||||||
|
animations to fixed frames.
|
||||||
|
|
||||||
|
\section1 Managing Keyframes
|
||||||
|
|
||||||
|
To animate components in the \uicontrol Timeline view, move to a frame
|
||||||
|
on the timeline and specify changes in the values of a property. \QDS
|
||||||
|
automatically adds keyframes between two keyframes, and sets their values
|
||||||
|
evenly to create an appearance of movement or transformation.
|
||||||
|
|
||||||
|
\section2 Navigating the Timeline
|
||||||
|
|
||||||
|
\image studio-timeline.png "Timeline view"
|
||||||
|
|
||||||
|
You can navigate the timeline in the following ways:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li Drag the playhead (1) to a frame.
|
||||||
|
\li Click on the ruler (2) to move to a frame.
|
||||||
|
\li Select the \uicontrol {To Start (Home)}, \uicontrol {Previous (,)},
|
||||||
|
or \uicontrol {Next (.)} buttons (3), or use the keyboard shortcuts
|
||||||
|
to move to the first, previous, or next frame on the timeline.
|
||||||
|
\li Enter the number of a frame in the field (4) to move to that frame.
|
||||||
|
\li Select the \uicontrol Previous and \uicontrol Next buttons next to
|
||||||
|
a property name on the timeline (5) to move to the previous or next
|
||||||
|
keyframe for that property.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
\section2 Setting Keyframe Values
|
||||||
|
|
||||||
|
You can insert keyframes for all the properties of all the components that
|
||||||
|
you want to animate first, and then record the changes in their values by
|
||||||
|
selecting the \inlineimage recordfill.png
|
||||||
|
(\uicontrol {Per Property Recording}) button for one property at a time.
|
||||||
|
For example, you can hide and show items by turning their visibility off and
|
||||||
|
on or by setting their opacity to 0 or 1.
|
||||||
|
|
||||||
|
You can also select the \uicontrol {Auto Key (K)} button (or press \key K)
|
||||||
|
to record changes in property values, but you need to be more careful about
|
||||||
|
which property values you are changing to avoid surprises.
|
||||||
|
|
||||||
|
To record the changes of property values:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li In the \uicontrol Navigator, select the item to animate.
|
||||||
|
\li In the \uicontrol Properties view, select \uicontrol Settings >
|
||||||
|
\uicontrol {Insert Keyframe} for the property that you want to
|
||||||
|
animate.
|
||||||
|
\li Select the \uicontrol {Per Property Recording} button to start
|
||||||
|
recording property changes.
|
||||||
|
\li Check that the playhead is in frame 0 and enter the value of the
|
||||||
|
property in the field next to the property name on the timeline.
|
||||||
|
Press \key Enter to save the value.
|
||||||
|
\li Move the playhead to another frame on the timeline and specify
|
||||||
|
the value at that frame.
|
||||||
|
\li When you have specified as many values as you need, select
|
||||||
|
\uicontrol {Per Property Recording} again to stop recording.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
To remove all the changes you recorded for a property, right-click the
|
||||||
|
property name on the timeline and select \uicontrol {Remove Property}.
|
||||||
|
|
||||||
|
Keyframes a marked on the timeline by using markers of different colors and
|
||||||
|
shapes, depending on whether they are active or inactive or whether you have
|
||||||
|
applied easing curves to them, for example.
|
||||||
|
|
||||||
|
To edit the value of the selected keyframe, select
|
||||||
|
\uicontrol {Edit Value for Keyframe} in the context menu.
|
||||||
|
|
||||||
|
You can copy the keyframes from the keyframe track for an item and
|
||||||
|
paste them to the keyframe track of another item. To copy all
|
||||||
|
keyframes from one item to another one, select an item, and then
|
||||||
|
select \uicontrol {Copy All Keyframes} in the context menu. Then
|
||||||
|
select the other item and select \uicontrol {Paste Keyframes} in
|
||||||
|
the context menu.
|
||||||
|
|
||||||
|
To delete the selected keyframe, select \uicontrol {Delete Keyframe} in the
|
||||||
|
context menu.
|
||||||
|
|
||||||
|
To delete all keyframes from the selected item, select
|
||||||
|
\uicontrol {Delete All Keyframes} in the context menu.
|
||||||
|
|
||||||
|
To add keyframes to the keyframe track of an item at the current position
|
||||||
|
of the playhead select \uicontrol {Add Keyframes at Current Frame}.
|
||||||
|
|
||||||
|
\section1 Viewing the Animation
|
||||||
|
|
||||||
|
You can view the animation on the canvas by moving the playhead along the
|
||||||
|
timeline.
|
||||||
|
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
To preview the animation, select the \uicontrol {Play (Space)}
|
||||||
|
button or press \key Space. To preview the whole UI, select the
|
||||||
|
\inlineimage live_preview.png
|
||||||
|
(\uicontrol {Show Live Preview}) button on the canvas toolbar
|
||||||
|
or press \key {Alt+P}.
|
||||||
|
\endif
|
||||||
|
|
||||||
|
\section1 Editing Easing Curves
|
||||||
|
|
||||||
|
\e Easing specifies the rate of a property value over time, so that
|
||||||
|
components can appear to pick up speed, slow down, or bounce back at the
|
||||||
|
end of the animation. By default, the animations you specify on the
|
||||||
|
timeline are \e linear, which means that they move from the beginning to
|
||||||
|
the end at a constant speed. You can use the curve picker to edit the
|
||||||
|
easing curve at a keyframe.
|
||||||
|
|
||||||
|
\image studio-curve-picker.png
|
||||||
|
|
||||||
|
You can use the preset curves or modify them by dragging the curve handlers
|
||||||
|
around. You can add points to the curve and drag them and the point handlers
|
||||||
|
to modify the curve. When you are happy with the curve, you can save it as a
|
||||||
|
custom curve. For more information about easing curve types, see the
|
||||||
|
documentation for \l [QML] {PropertyAnimation}{easing curves}.
|
||||||
|
|
||||||
|
To zoom into and out of the easing curve editor, use the mouse roller. To
|
||||||
|
reset the zoom factor, right-click in the editor and select
|
||||||
|
\uicontrol {Reset Zoom}.
|
||||||
|
|
||||||
|
To select easing curves:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li Select a keyframe on the timeline.
|
||||||
|
\li Select \uicontrol {Curve Picker (C)} on the toolbar, or press
|
||||||
|
\key C to open the \uicontrol {Easing Curve Editor} dialog.
|
||||||
|
\li Select an easing curve in the \uicontrol Presets tab.
|
||||||
|
\li In the \uicontrol {Duration (ms)} field, select the duration of the
|
||||||
|
easing function in milliseconds.
|
||||||
|
\li Select \uicontrol Preview to preview the curve.
|
||||||
|
\li Select \uicontrol OK to attach the easing curve to the keyframe
|
||||||
|
and to close the curve picker.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
When you attach easing curves to keyframes, the shape of the keyframe
|
||||||
|
marker changes from \inlineimage keyframe_linear_inactive.png
|
||||||
|
to \inlineimage keyframe_manualbezier_inactive.png
|
||||||
|
.
|
||||||
|
|
||||||
|
To customize easing curves:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li In the \uicontrol {Easing Curve Editor} dialog, select an easing
|
||||||
|
curve in the \uicontrol Presets tab.
|
||||||
|
\li Drag the curve handlers to modify the curve.
|
||||||
|
\li Right-click in the editor, and select \uicontrol {Add Point} to add
|
||||||
|
points to the curve.
|
||||||
|
\li Drag the points or the point handlers to modify the curve. If the
|
||||||
|
curve becomes invalid, it turns red in the editor and the
|
||||||
|
\uicontrol Save button is disabled.
|
||||||
|
\li Select \uicontrol Save to save your changes to the curve.
|
||||||
|
\li In the \uicontrol Name field, enter a name for the custom curve,
|
||||||
|
and then select \uicontrol OK to save the curve in the
|
||||||
|
\uicontrol Custom tab.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
To paste easing curve definitions to the curve picker as text, select
|
||||||
|
the \uicontrol Text tab.
|
||||||
|
|
||||||
|
\section1 Rotating Items
|
||||||
|
|
||||||
|
To animate components that rotate around a central point, you can use the
|
||||||
|
\l Item QML type as a parent for the rotating component. Then create a
|
||||||
|
timeline for the Item and set the rotation property for the start and end
|
||||||
|
keyframes.
|
||||||
|
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
|
\section1 Animating Shapes
|
||||||
|
|
||||||
|
You can use the Studio components to animate the following shapes:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li Arc
|
||||||
|
\li Border
|
||||||
|
\li Pie
|
||||||
|
\li Rectangle
|
||||||
|
\li Triangle
|
||||||
|
\endlist
|
||||||
|
\endif
|
||||||
|
*/
|
@@ -33,12 +33,11 @@
|
|||||||
|
|
||||||
\contentspage index.html
|
\contentspage index.html
|
||||||
\page creator-quick-ui-forms.html
|
\page creator-quick-ui-forms.html
|
||||||
\if defined(qtdesignstudio)
|
|
||||||
\previouspage qtquick-iso-icon-browser.html
|
\previouspage qtquick-iso-icon-browser.html
|
||||||
|
\if defined(qtdesignstudio)
|
||||||
\nextpage studio-live-preview.html
|
\nextpage studio-live-preview.html
|
||||||
\else
|
\else
|
||||||
\previouspage quick-projects.html
|
\nextpage quick-export-to-qml.html
|
||||||
\nextpage creator-using-qt-quick-designer.html
|
|
||||||
\endif
|
\endif
|
||||||
|
|
||||||
\title Qt Quick UI Forms
|
\title Qt Quick UI Forms
|
||||||
|
@@ -99,9 +99,9 @@ def main():
|
|||||||
args = parse_arguments()
|
args = parse_arguments()
|
||||||
base_repo_name = args.name if args.name else "qtcreator"
|
base_repo_name = args.name if args.name else "qtcreator"
|
||||||
if not args.name and not args.modules: # default Qt Creator repository
|
if not args.name and not args.modules: # default Qt Creator repository
|
||||||
qbs_path = os.path.join('src', 'shared', 'qbs')
|
submodules = [os.path.join('src', 'shared', 'qbs'),
|
||||||
if os.path.exists(os.path.join(args.repo, qbs_path)):
|
os.path.join('src', 'tools', 'perfparser')]
|
||||||
args.modules = [qbs_path]
|
args.modules = [path for path in submodules if os.path.exists(os.path.join(args.repo, path, '.git'))]
|
||||||
repos = [(base_repo_name, args.repo, '')]
|
repos = [(base_repo_name, args.repo, '')]
|
||||||
for module in args.modules:
|
for module in args.modules:
|
||||||
repos += [(module, os.path.join(args.repo, module), module + os.sep)]
|
repos += [(module, os.path.join(args.repo, module), module + os.sep)]
|
||||||
|
@@ -129,6 +129,16 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"trDisplayName": "Kit Selection",
|
||||||
|
"trShortTitle": "Kits",
|
||||||
|
"typeId": "Kits",
|
||||||
|
"enabled": "%{JS: ! %{IsSubproject}}",
|
||||||
|
"data": {
|
||||||
|
"projectFilePath": "%{QmlProjectFileName}",
|
||||||
|
"requiredFeatures": [ "QtSupport.Wizards.FeatureQt", "%{QtQuickFeature}" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"trDisplayName": "Project Management",
|
"trDisplayName": "Project Management",
|
||||||
"trShortTitle": "Summary",
|
"trShortTitle": "Summary",
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>New Folder</source>
|
<source>New Folder</source>
|
||||||
<translation>Neuer Ordner</translation>
|
<translation>Neues Verzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Bookmarks</source>
|
<source>Bookmarks</source>
|
||||||
@@ -48,15 +48,15 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Folder</source>
|
<source>Delete Folder</source>
|
||||||
<translation>Ordner löschen</translation>
|
<translation>Verzeichnis löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Rename Folder</source>
|
<source>Rename Folder</source>
|
||||||
<translation>Ordner umbenennen</translation>
|
<translation>Verzeichnis umbenennen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Add in folder:</source>
|
<source>Add in folder:</source>
|
||||||
<translation>Im Ordner:</translation>
|
<translation>Im Verzeichnis:</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -71,11 +71,11 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deleting a folder also removes its content.<br>Do you want to continue?</source>
|
<source>Deleting a folder also removes its content.<br>Do you want to continue?</source>
|
||||||
<translation>Beim Löschen eines Ordners wird auch dessen Inhalt gelöscht.<br>Möchten Sie trotzdem fortsetzen?</translation>
|
<translation>Beim Löschen eines Verzeichnisses wird auch dessen Inhalt gelöscht.<br>Möchten Sie trotzdem fortsetzen?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>New Folder</source>
|
<source>New Folder</source>
|
||||||
<translation>Neuer Ordner</translation>
|
<translation>Neues Verzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Bookmark</source>
|
<source>Bookmark</source>
|
||||||
@@ -86,11 +86,11 @@
|
|||||||
<name>BookmarkWidget</name>
|
<name>BookmarkWidget</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Folder</source>
|
<source>Delete Folder</source>
|
||||||
<translation>Ordner löschen</translation>
|
<translation>Verzeichnis löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Rename Folder</source>
|
<source>Rename Folder</source>
|
||||||
<translation>Ordner umbenennen</translation>
|
<translation>Verzeichnis umbenennen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Show Bookmark</source>
|
<source>Show Bookmark</source>
|
||||||
@@ -4288,7 +4288,7 @@ Grund: %3</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Project Name and Location</source>
|
<source>Project Name and Location</source>
|
||||||
<translation>Name und Ordner des Projekts</translation>
|
<translation>Name und Verzeichnis des Projekts</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Project name:</source>
|
<source>Project name:</source>
|
||||||
@@ -4339,7 +4339,7 @@ Grund: %3</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Select Git Directory</source>
|
<source>Select Git Directory</source>
|
||||||
<translation>Git-Ordner auswählen</translation>
|
<translation>Git-Verzeichnis auswählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Error: Unknown reference</source>
|
<source>Error: Unknown reference</source>
|
||||||
@@ -5157,11 +5157,11 @@ Jetzt Commit ausführen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Gitk for folder of Current File</source>
|
<source>Gitk for folder of Current File</source>
|
||||||
<translation>Gitk für Ordner der Datei</translation>
|
<translation>Gitk für Verzeichnis der Datei</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Gitk for folder of "%1"</source>
|
<source>Gitk for folder of "%1"</source>
|
||||||
<translation>Gitk für Ordner von "%1"</translation>
|
<translation>Gitk für Verzeichnis von "%1"</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Git Gui</source>
|
<source>Git Gui</source>
|
||||||
@@ -7082,7 +7082,7 @@ konnte dem Projekt "%2" nicht hinzugefügt werden.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>A version control system repository could not be created in "%1".</source>
|
<source>A version control system repository could not be created in "%1".</source>
|
||||||
<translation>Das Versionskontrollsystem konnte im Ordner "%1" kein Repository anlegen.</translation>
|
<translation>Das Versionskontrollsystem konnte im Verzeichnis "%1" kein Repository anlegen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to add "%1" to the version control system.</source>
|
<source>Failed to add "%1" to the version control system.</source>
|
||||||
@@ -8937,7 +8937,7 @@ Rename %2 to %3 anyway?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Choose Directory</source>
|
<source>Choose Directory</source>
|
||||||
<translation>Ordner wählen</translation>
|
<translation>Verzeichnis wählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Choose Executable</source>
|
<source>Choose Executable</source>
|
||||||
@@ -9047,7 +9047,7 @@ Rename %2 to %3 anyway?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Use as default project location</source>
|
<source>Use as default project location</source>
|
||||||
<translation>Als Vorgabe für Projektordner verwenden</translation>
|
<translation>Als Vorgabe für Projektverzeichnis verwenden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Introduction and Project Location</source>
|
<source>Introduction and Project Location</source>
|
||||||
@@ -9742,7 +9742,7 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.</translat
|
|||||||
<name>Utils::UnixTools</name>
|
<name>Utils::UnixTools</name>
|
||||||
<message>
|
<message>
|
||||||
<source><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%d</td><td>directory of current file</td></tr><tr><td>%f</td><td>file name (with full path)</td></tr><tr><td>%n</td><td>file name (without path)</td></tr><tr><td>%%</td><td>%</td></tr></table></source>
|
<source><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%d</td><td>directory of current file</td></tr><tr><td>%f</td><td>file name (with full path)</td></tr><tr><td>%n</td><td>file name (without path)</td></tr><tr><td>%%</td><td>%</td></tr></table></source>
|
||||||
<translation><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expandiert zu</th></tr><tr><td>%d</td><td>Ordner der aktuellen Datei</td></tr><tr><td>%f</td><td>Dateiname mit vollständigem Pfad</td></tr><tr><td>%n</td><td>Dateiname (ohne Pfad)</td></tr><tr><td>%%</td><td>%</td></tr></table></translation>
|
<translation><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expandiert zu</th></tr><tr><td>%d</td><td>Verzeichnis der aktuellen Datei</td></tr><tr><td>%f</td><td>Dateiname mit vollständigem Pfad</td></tr><tr><td>%n</td><td>Dateiname (ohne Pfad)</td></tr><tr><td>%%</td><td>%</td></tr></table></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -10718,7 +10718,7 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.</trans
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Choose Repository Directory</source>
|
<source>Choose Repository Directory</source>
|
||||||
<translation>Ordner für Repository wählen</translation>
|
<translation>Verzeichnis für Repository wählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The file "%1" could not be deleted.</source>
|
<source>The file "%1" could not be deleted.</source>
|
||||||
@@ -10730,7 +10730,7 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.</trans
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The directory "%1" is already managed by a version control system (%2). Would you like to specify another directory?</source>
|
<source>The directory "%1" is already managed by a version control system (%2). Would you like to specify another directory?</source>
|
||||||
<translation>Der Ordner "%1" steht bereits unter Verwaltung eines Versionskontrollsystems (%2). Möchten Sie einen anderen Ordner angeben?</translation>
|
<translation>Das Verzeichnis "%1" steht bereits unter Verwaltung eines Versionskontrollsystems (%2). Möchten Sie einen anderes Verzeichnis angeben?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Repository already under version control</source>
|
<source>Repository already under version control</source>
|
||||||
@@ -10746,7 +10746,7 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.</trans
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>A version control repository has been created in %1.</source>
|
<source>A version control repository has been created in %1.</source>
|
||||||
<translation>Ein Repository für Versionskontrolle wurde im Ordner %1 erstellt.</translation>
|
<translation>Ein Repository für Versionskontrolle wurde im Verzeichnis %1 erstellt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Commit</source>
|
<source>Commit</source>
|
||||||
@@ -10755,7 +10755,7 @@ Dies ist unabhängig vom Wert der Eigenschaft "visible" in QML.</trans
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>A version control repository could not be created in %1.</source>
|
<source>A version control repository could not be created in %1.</source>
|
||||||
<translation>Im Ordner %1 konnte kein Repository für die Versionskontrolle erstellt werden.</translation>
|
<translation>Im Verzeichnis %1 konnte kein Repository für die Versionskontrolle erstellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -11379,7 +11379,7 @@ Für CMake-Projekte stellen Sie sicher, dass die Variable QML_IMPORT_PATH in CMa
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Qt Creator build:</source>
|
<source>Qt Creator build:</source>
|
||||||
<translation>Qt Creator-Build-Ordner:</translation>
|
<translation>Qt Creator-Build-Verzeichnis:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy into:</source>
|
<source>Deploy into:</source>
|
||||||
@@ -12333,11 +12333,11 @@ Wenn Sie %2 aus den Quelltexten erstellen und eine ausführbare CDB-Datei mit ei
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The folder "%1" could not be created.</source>
|
<source>The folder "%1" could not be created.</source>
|
||||||
<translation>Der Ordner "%1" konnte nicht angelegt werden.</translation>
|
<translation>Das Verzeichnis "%1" konnte nicht angelegt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot Create</source>
|
<source>Cannot Create</source>
|
||||||
<translation>Ordner kann nicht angelegt werden</translation>
|
<translation>Verzeichnis kann nicht angelegt werden</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -13179,7 +13179,7 @@ konnte nicht unter Versionsverwaltung (%2) gestellt werden
|
|||||||
<name>Debugger::Internal::StartRemoteCdbDialog</name>
|
<name>Debugger::Internal::StartRemoteCdbDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<source><html><body><p>The remote CDB needs to load the matching %1 CDB extension (<code>%2</code> or <code>%3</code>, respectively).</p><p>Copy it onto the remote machine and set the environment variable <code>%4</code> to point to its folder.</p><p>Launch the remote CDB as <code>%5 &lt;executable&gt;</code> to use TCP/IP as communication protocol.</p><p>Enter the connection parameters as:</p><pre>%6</pre></body></html></source>
|
<source><html><body><p>The remote CDB needs to load the matching %1 CDB extension (<code>%2</code> or <code>%3</code>, respectively).</p><p>Copy it onto the remote machine and set the environment variable <code>%4</code> to point to its folder.</p><p>Launch the remote CDB as <code>%5 &lt;executable&gt;</code> to use TCP/IP as communication protocol.</p><p>Enter the connection parameters as:</p><pre>%6</pre></body></html></source>
|
||||||
<translation><html><body><p>Der entfernte CDB muss die passende CDB-Erweiterungsbibliothek von %1 (<code>%2</code> beziehungsweise <code>%3</code>) laden.</p><p>Kopieren Sie sie auf den entfernten Rechner und setzen Sie die Umgebungsvariable <code>%4</code> auf den Ordner.</p><p>Starten Sie den entfernten CDB als <code>%5 &lt;ausführbare Datei&gt;</code> um TCP/IP als Kommunikationsprotokoll zu verwenden.</p><p>Geben Sie die Verbindungsparameter wie folgt an:</p><pre>%6</pre></body></html></translation>
|
<translation><html><body><p>Der entfernte CDB muss die passende CDB-Erweiterungsbibliothek von %1 (<code>%2</code> beziehungsweise <code>%3</code>) laden.</p><p>Kopieren Sie sie auf den entfernten Rechner und setzen Sie die Umgebungsvariable <code>%4</code> auf das Verzeichnis.</p><p>Starten Sie den entfernten CDB als <code>%5 &lt;ausführbare Datei&gt;</code> um TCP/IP als Kommunikationsprotokoll zu verwenden.</p><p>Geben Sie die Verbindungsparameter wie folgt an:</p><pre>%6</pre></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Start a CDB Remote Session</source>
|
<source>Start a CDB Remote Session</source>
|
||||||
@@ -14026,7 +14026,7 @@ Lokale Commits werden nicht zum Master-Branch gepusht, bis ein normaler Commit e
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Use existing directory</source>
|
<source>Use existing directory</source>
|
||||||
<translation>Vorhandenen Ordner verwenden</translation>
|
<translation>Vorhandenes Verzeichnis verwenden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Create prefix</source>
|
<source>Create prefix</source>
|
||||||
@@ -14063,8 +14063,8 @@ Lokale Commits werden nicht zum Master-Branch gepusht, bis ein normaler Commit e
|
|||||||
<message>
|
<message>
|
||||||
<source>By default, push will fail if the target directory exists, but does not already have a control directory.
|
<source>By default, push will fail if the target directory exists, but does not already have a control directory.
|
||||||
This flag will allow push to proceed.</source>
|
This flag will allow push to proceed.</source>
|
||||||
<translation>Normalerweise schlägt eine push-Operation fehl, wenn das Zielverzeichnis vorhanden ist, aber keinen Versionskontroll-Ordner hat.
|
<translation>Normalerweise schlägt eine push-Operation fehl, wenn das Zielverzeichnis vorhanden ist, aber kein Versionskontrollverzeichnis hat.
|
||||||
Die Einstellung gestattet es, unter diesem Umständen fortzusetzen.</translation>
|
Die Einstellung gestattet es, unter diesen Umständen fortzusetzen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>For example: 'https://[user[:pass]@]host[:port]/[path]'.</source>
|
<source>For example: 'https://[user[:pass]@]host[:port]/[path]'.</source>
|
||||||
@@ -14898,7 +14898,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.</translati
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Directory</source>
|
<source>Directory</source>
|
||||||
<translation>Ordner</translation>
|
<translation>Verzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>File</source>
|
<source>File</source>
|
||||||
@@ -16507,7 +16507,7 @@ Wollen Sie die Daten vorher speichern?</translation>
|
|||||||
<name>TextEditor::Internal::SnippetsCollection</name>
|
<name>TextEditor::Internal::SnippetsCollection</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot create user snippet directory %1</source>
|
<source>Cannot create user snippet directory %1</source>
|
||||||
<translation>Der Snippet-Ordner des Nutzers konnte nicht erstellt werden: %1</translation>
|
<translation>Das Snippet-Verzeichnis des Nutzers konnte nicht erstellt werden: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -17279,7 +17279,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Show Containing Folder</source>
|
<source>Show Containing Folder</source>
|
||||||
<translation>Beinhaltenden Ordner anzeigen</translation>
|
<translation>Beinhaltendes Verzeichnis anzeigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Open Command Prompt Here</source>
|
<source>Open Command Prompt Here</source>
|
||||||
@@ -17302,7 +17302,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
<name>BaseFileWizard</name>
|
<name>BaseFileWizard</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Unable to create the directory %1.</source>
|
<source>Unable to create the directory %1.</source>
|
||||||
<translation>Der Ordner %1 kann nicht erstellt werden.</translation>
|
<translation>Das Verzeichnis %1 kann nicht erstellt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -17789,11 +17789,11 @@ Außer: %3
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Director&y:</source>
|
<source>Director&y:</source>
|
||||||
<translation>&Ordner:</translation>
|
<translation>&Verzeichnis:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Directory to Search</source>
|
<source>Directory to Search</source>
|
||||||
<translation>Suchordner</translation>
|
<translation>Suchverzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -18937,7 +18937,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Reset information about which version control system handles which directory.</source>
|
<source>Reset information about which version control system handles which directory.</source>
|
||||||
<translation>Die Zuordnung, welches Versionsverwaltungssystem welchen Ordner behandelt, zurücksetzen.</translation>
|
<translation>Die Zuordnung, welches Versionsverwaltungssystem welches Verzeichnis behandelt, zurücksetzen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Reset VCS Cache</source>
|
<source>Reset VCS Cache</source>
|
||||||
@@ -19053,7 +19053,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Build Location</source>
|
<source>Build Location</source>
|
||||||
<translation>Build-Ordner</translation>
|
<translation>Build-Verzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -20063,7 +20063,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Select Android SDK folder</source>
|
<source>Select Android SDK folder</source>
|
||||||
<translation>Android-SDK-Ordner auswählen</translation>
|
<translation>Android-SDK-Verzeichnis auswählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>JDK path exists.</source>
|
<source>JDK path exists.</source>
|
||||||
@@ -20123,7 +20123,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Select Android NDK folder</source>
|
<source>Select Android NDK folder</source>
|
||||||
<translation>Android-NDK-Ordner auswählen</translation>
|
<translation>Android-NDK-Verzeichnis auswählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Android SDK installation is missing necessary packages. Do you want to install the missing packages?</source>
|
<source>Android SDK installation is missing necessary packages. Do you want to install the missing packages?</source>
|
||||||
@@ -20483,7 +20483,7 @@ were not verified among remotes in %3. Select different folder?</source>
|
|||||||
<translation>Change host %1
|
<translation>Change host %1
|
||||||
und Projekt %2
|
und Projekt %2
|
||||||
|
|
||||||
gehören nicht zu den verifizierten Remotes in %3. Anderen Ordner angeben?</translation>
|
gehören nicht zu den verifizierten Remotes in %3. Anderes Verzeichnis angeben?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Enter Local Repository for "%1" (%2)</source>
|
<source>Enter Local Repository for "%1" (%2)</source>
|
||||||
@@ -21515,7 +21515,7 @@ hinzufügen, um dem QML-Editor den wahrscheinlichen URI mitzuteilen.</translatio
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>DiffUtils is available for free download at http://gnuwin32.sourceforge.net/packages/diffutils.htm. Extract it to a directory in your PATH.</source>
|
<source>DiffUtils is available for free download at http://gnuwin32.sourceforge.net/packages/diffutils.htm. Extract it to a directory in your PATH.</source>
|
||||||
<translation>DiffUtils sind kostenlos erhältlich unter http://gnuwin32.sourceforge.net/packages/diffutils.htm . Bitte entpacken Sie sie in einen im Suchpfad befindlichen Ordner.</translation>
|
<translation>DiffUtils sind kostenlos erhältlich unter http://gnuwin32.sourceforge.net/packages/diffutils.htm . Bitte entpacken Sie sie in ein im Suchpfad befindliches Verzeichnis.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -21814,7 +21814,7 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sys Root "%1" is not a directory.</source>
|
<source>Sys Root "%1" is not a directory.</source>
|
||||||
<translation>Sys-Root "%1" ist kein Ordner.</translation>
|
<translation>Sys-Root "%1" ist kein Verzeichnis.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sys Root "%1" is empty.</source>
|
<source>Sys Root "%1" is empty.</source>
|
||||||
@@ -23033,7 +23033,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>File or directory does not exist.</source>
|
<source>File or directory does not exist.</source>
|
||||||
<translation>Datei oder Ordner existiert nicht.</translation>
|
<translation>Datei oder Verzeichnis existiert nicht.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Invalid color.</source>
|
<source>Invalid color.</source>
|
||||||
@@ -26562,7 +26562,7 @@ Möchten Sie das vorhandene Paket deinstallieren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Library inside "debug" or "release" subfolder</source>
|
<source>Library inside "debug" or "release" subfolder</source>
|
||||||
<translation>Bibliothek innerhalb "debug" oder "release" Unterordner</translation>
|
<translation>Bibliothek innerhalb "debug" oder "release" Unterverzeichnis</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Add "d" suffix for debug version</source>
|
<source>Add "d" suffix for debug version</source>
|
||||||
@@ -27074,7 +27074,7 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü
|
|||||||
<name>QmakeProjectManager::Internal::SubdirsProjectWizardDialog</name>
|
<name>QmakeProjectManager::Internal::SubdirsProjectWizardDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<source>This wizard generates a Qt Subdirs project. Add subprojects to it later on by using the other wizards.</source>
|
<source>This wizard generates a Qt Subdirs project. Add subprojects to it later on by using the other wizards.</source>
|
||||||
<translation>Dieser Assistent erstellt ein Qt-Projekt vom Typ subdirs. Mit Hilfe der anderen Assistenten können später Unterprojekte hinzugefügt werden.</translation>
|
<translation>Dieser Assistent erstellt ein Qt-Projekt vom Typ subdirs. Unterprojekte können später mit anderen Assistenten hinzugefügt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -27212,7 +27212,7 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü
|
|||||||
<message>
|
<message>
|
||||||
<source>A build for a different project exists in %1, which will be overwritten.</source>
|
<source>A build for a different project exists in %1, which will be overwritten.</source>
|
||||||
<comment>%1 build directory</comment>
|
<comment>%1 build directory</comment>
|
||||||
<translation>Im Ordner %1 existiert bereits ein Build eines anderen Projektes, welcher überschrieben wird.</translation>
|
<translation>Im Verzeichnis %1 existiert bereits ein Build eines anderen Projektes, welcher überschrieben wird.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -27826,7 +27826,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Locator filters that do not update their cached data immediately, such as the custom directory filters, update it after this time interval.</source>
|
<source>Locator filters that do not update their cached data immediately, such as the custom directory filters, update it after this time interval.</source>
|
||||||
<translation>Locator-Filter, die ihre gespeicherten Daten nicht unmittelbar aktualisieren (wie die benutzerdefinierten Filter für Ordner), aktualisieren ihre Daten nach diesem Intervall.</translation>
|
<translation>Locator-Filter, die ihre gespeicherten Daten nicht unmittelbar aktualisieren (wie die benutzerdefinierten Filter für Verzeichnisse), aktualisieren ihre Daten nach diesem Intervall.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Refresh interval:</source>
|
<source>Refresh interval:</source>
|
||||||
@@ -28825,7 +28825,7 @@ Möchten Sie es beenden?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote directory:</source>
|
<source>Remote directory:</source>
|
||||||
<translation>Entfernter Ordner:</translation>
|
<translation>Entferntes Verzeichnis:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Close</source>
|
<source>Close</source>
|
||||||
@@ -30198,7 +30198,7 @@ Der vom Kit mindestens benötigte API-Level ist %1.</translation>
|
|||||||
<source>The following files already exist in the folder
|
<source>The following files already exist in the folder
|
||||||
%1.
|
%1.
|
||||||
Would you like to overwrite them?</source>
|
Would you like to overwrite them?</source>
|
||||||
<translation>Die folgenden Dateien existieren bereits im Ordner
|
<translation>Die folgenden Dateien existieren bereits im Verzeichnis
|
||||||
%1.
|
%1.
|
||||||
Sollen sie überschrieben werden?</translation>
|
Sollen sie überschrieben werden?</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -37461,9 +37461,9 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation>
|
|||||||
<source>Not showing %n files that are outside of the base directory.
|
<source>Not showing %n files that are outside of the base directory.
|
||||||
These files are preserved.</source>
|
These files are preserved.</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>Eine Datei, die sich außerhalb des Basisordners befindet, wird nicht angezeigt.
|
<numerusform>Eine Datei, die sich außerhalb des Basisverzeichnisses befindet, wird nicht angezeigt.
|
||||||
Sie wird erhalten.</numerusform>
|
Sie wird erhalten.</numerusform>
|
||||||
<numerusform>%n Dateien, die sich außerhalb des Basisordners befinden, werden nicht angezeigt.
|
<numerusform>%n Dateien, die sich außerhalb des Basisverzeichnisses befinden, werden nicht angezeigt.
|
||||||
Sie werden erhalten.</numerusform>
|
Sie werden erhalten.</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -46492,7 +46492,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni
|
|||||||
<name>SyntaxHighlightingCLI</name>
|
<name>SyntaxHighlightingCLI</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Command line syntax highlighter using Kate syntax definitions.</source>
|
<source>Command line syntax highlighter using Kate syntax definitions.</source>
|
||||||
<translation>Kommandozeilen-Syntaxhervorhebung mit Hilfe von Kate-Syntaxdefinitionen.</translation>
|
<translation>Kommandozeilen-Syntaxhervorhebung mittels Kate-Syntaxdefinitionen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>source</source>
|
<source>source</source>
|
||||||
@@ -46524,7 +46524,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Highlight using this syntax definition (default: auto-detect based on input file).</source>
|
<source>Highlight using this syntax definition (default: auto-detect based on input file).</source>
|
||||||
<translation>Mit Hilfe dieser Syntaxdefinition hervorheben (Vorgabe: Anhand der Eingabedatei automatisch erkennen).</translation>
|
<translation>Mit dieser Syntaxdefinition hervorheben (Vorgabe: Anhand der Eingabedatei automatisch erkennen).</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>syntax</source>
|
<source>syntax</source>
|
||||||
@@ -47278,7 +47278,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Deploy files via rsync</source>
|
<source>Deploy files via rsync</source>
|
||||||
<translation>Dateien mit Hilfe von rsync übertragen</translation>
|
<translation>Dateien mittels rsync übertragen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
197
src/libs/3rdparty/syntax-highlighting/data/syntax/modelines.xml
vendored
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE language SYSTEM "language.dtd"
|
||||||
|
[
|
||||||
|
<!ENTITY space " ">
|
||||||
|
<!ENTITY end ";">
|
||||||
|
]>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)
|
||||||
|
-->
|
||||||
|
<language name="Modelines"
|
||||||
|
version="4"
|
||||||
|
kateversion="5.0"
|
||||||
|
section="Other"
|
||||||
|
extensions=""
|
||||||
|
mimetype=""
|
||||||
|
author="Alex Turbov (i.zaufi@gmail.com)"
|
||||||
|
license="MIT"
|
||||||
|
hidden="true"
|
||||||
|
priority="6">
|
||||||
|
<!--
|
||||||
|
The main purpose of this file is to be included into other syntax files.
|
||||||
|
|
||||||
|
NOTE Default colors are set to 'Comment', so if u don't want to highight it,
|
||||||
|
just leave colors as is...
|
||||||
|
|
||||||
|
TODO Support for other modelines? emacs/vim??
|
||||||
|
-->
|
||||||
|
<highlighting>
|
||||||
|
<list name="ModelineStartKeyword">
|
||||||
|
<item>kate:</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="Booleans">
|
||||||
|
<item>auto-brackets</item>
|
||||||
|
<!-- NOTE Deprecated -->
|
||||||
|
<!-- <item>auto-insert-doxygen</item> -->
|
||||||
|
<item>automatic-spell-checking</item> <!-- NOTE Since KDE 4.?? -->
|
||||||
|
<item>backspace-indents</item>
|
||||||
|
<item>block-selection</item>
|
||||||
|
<item>bookmark-sorting</item>
|
||||||
|
<item>bom</item>
|
||||||
|
<item>byte-order-marker</item>
|
||||||
|
<item>byte-order-mark</item>
|
||||||
|
<item>dynamic-word-wrap</item>
|
||||||
|
<item>folding-markers</item>
|
||||||
|
<item>folding-preview</item> <!-- Since KTextEditor 5.24 -->
|
||||||
|
<item>icon-border</item>
|
||||||
|
<item>indent-pasted-text</item> <!-- Since KDE 4.11 -->
|
||||||
|
<item>keep-extra-spaces</item>
|
||||||
|
<item>line-numbers</item>
|
||||||
|
<item>newline-at-eof</item> <!-- Since KDE 4.9 -->
|
||||||
|
<item>overwrite-mode</item>
|
||||||
|
<item>persistent-selection</item>
|
||||||
|
<!-- NOTE Deprecated since KDE 4.10 -->
|
||||||
|
<!-- <item>remove-trailing-space</item> -->
|
||||||
|
<item>replace-tabs-save</item>
|
||||||
|
<item>replace-tabs</item>
|
||||||
|
<item>replace-trailing-space-save</item>
|
||||||
|
<item>smart-home</item>
|
||||||
|
<item>scrollbar-minimap</item> <!-- Since KTextEditor 5.24 -->
|
||||||
|
<item>scrollbar-preview</item> <!-- Since KTextEditor 5.24 -->
|
||||||
|
<item>space-indent</item>
|
||||||
|
<item>show-tabs</item>
|
||||||
|
<item>show-trailing-spaces</item> <!-- NOTE Since KDE 4.?? -->
|
||||||
|
<item>tab-indents</item>
|
||||||
|
<item>word-wrap</item>
|
||||||
|
<item>wrap-cursor</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="True">
|
||||||
|
<item>on</item>
|
||||||
|
<item>true</item>
|
||||||
|
<item>1</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="False">
|
||||||
|
<item>off</item>
|
||||||
|
<item>false</item>
|
||||||
|
<item>0</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="Integrals">
|
||||||
|
<item>auto-center-lines</item>
|
||||||
|
<item>font-size</item>
|
||||||
|
<item>indent-mode</item>
|
||||||
|
<item>indent-width</item>
|
||||||
|
<item>tab-width</item>
|
||||||
|
<item>undo-steps</item>
|
||||||
|
<item>word-wrap-column</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="Strings">
|
||||||
|
<item>background-color</item>
|
||||||
|
<item>bracket-highlight-color</item>
|
||||||
|
<item>current-line-color</item>
|
||||||
|
<item>default-dictionary</item>
|
||||||
|
<item>encoding</item> <!-- NOTE Since KDE 4.?? -->
|
||||||
|
<item>eol</item> <!-- Valid settings are unix, mac and dos -->
|
||||||
|
<item>end-of-line</item> <!-- Valid settings are unix, mac and dos -->
|
||||||
|
<item>font</item>
|
||||||
|
<item>hl</item>
|
||||||
|
<item>icon-bar-color</item>
|
||||||
|
<item>mode</item> <!-- NOTE Since KDE 4.?? -->
|
||||||
|
<item>scheme</item>
|
||||||
|
<item>selection-color</item>
|
||||||
|
<item>syntax</item>
|
||||||
|
<item>word-wrap-marker-color</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="RemoveSpaces">
|
||||||
|
<item>remove-trailing-spaces</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<list name="RemoveSpacesOptions">
|
||||||
|
<item>0</item>
|
||||||
|
<item>-</item>
|
||||||
|
<item>none</item>
|
||||||
|
|
||||||
|
<item>modified</item>
|
||||||
|
<item>mod</item>
|
||||||
|
<item>+</item>
|
||||||
|
<item>1</item>
|
||||||
|
|
||||||
|
<item>all</item>
|
||||||
|
<item>*</item>
|
||||||
|
<item>2</item>
|
||||||
|
</list>
|
||||||
|
|
||||||
|
<contexts>
|
||||||
|
<context name="Normal" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />
|
||||||
|
<RegExpr String="kate-(mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<context name="Modeline" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<keyword String="Booleans" context="Booleans" attribute="Variable" />
|
||||||
|
<keyword String="Integrals" context="Integrals" attribute="Variable" />
|
||||||
|
<keyword String="Strings" context="Strings" attribute="Variable" />
|
||||||
|
<keyword String="RemoveSpaces" context="RemoveSpaces" attribute="Variable" />
|
||||||
|
<LineContinue context="#pop" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<context name="Booleans" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<keyword String="True" attribute="Option ON" context="#stay" />
|
||||||
|
<keyword String="False" attribute="Option OFF" context="#stay" />
|
||||||
|
<DetectChar char="&end;" context="#pop" attribute="Variable" />
|
||||||
|
<LineContinue context="#pop" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<context name="Integrals" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<Int attribute="Number" context="#stay" />
|
||||||
|
<DetectChar char="&end;" context="#pop" attribute="Variable" />
|
||||||
|
<LineContinue context="#pop" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<context name="Strings" attribute="String" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<RegExpr String="[^&end;&space;]" context="#stay" />
|
||||||
|
<DetectChar char="&end;" context="#pop" attribute="Variable" />
|
||||||
|
<LineContinue context="#pop" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectSpaces />
|
||||||
|
<keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />
|
||||||
|
<DetectChar char="&end;" context="#pop" attribute="Variable" />
|
||||||
|
<LineContinue context="#pop" />
|
||||||
|
</context>
|
||||||
|
<context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop">
|
||||||
|
<DetectChar char="&end;" context="#pop" attribute="Variable" />
|
||||||
|
</context>
|
||||||
|
|
||||||
|
</contexts>
|
||||||
|
|
||||||
|
<itemDatas>
|
||||||
|
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
|
||||||
|
<itemData name="Keyword" defStyleNum="dsAnnotation" spellChecking="false" />
|
||||||
|
<itemData name="Variable" defStyleNum="dsCommentVar" spellChecking="false" />
|
||||||
|
<itemData name="Number" defStyleNum="dsDecVal" spellChecking="false" />
|
||||||
|
<itemData name="String" defStyleNum="dsString" spellChecking="false" />
|
||||||
|
<itemData name="Value" defStyleNum="dsOthers" spellChecking="false" />
|
||||||
|
<itemData name="Option ON" defStyleNum="dsOthers" spellChecking="false" />
|
||||||
|
<itemData name="Option OFF" defStyleNum="dsOthers" spellChecking="false" />
|
||||||
|
</itemDatas>
|
||||||
|
|
||||||
|
</highlighting>
|
||||||
|
|
||||||
|
<general>
|
||||||
|
<keywords casesensitive="1" weakDeliminator=":-+*" />
|
||||||
|
</general>
|
||||||
|
|
||||||
|
</language>
|
||||||
|
<!-- kate: indent-width 2; -->
|
@@ -157,6 +157,7 @@ void SftpTransfer::doStart()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const FileToTransfer &f : d->files) {
|
for (const FileToTransfer &f : d->files) {
|
||||||
|
QString sourceFileOrLinkTarget;
|
||||||
bool link = false;
|
bool link = false;
|
||||||
if (d->transferType == Internal::FileTransferType::Upload) {
|
if (d->transferType == Internal::FileTransferType::Upload) {
|
||||||
QFileInfo fi(f.sourceFile);
|
QFileInfo fi(f.sourceFile);
|
||||||
@@ -164,10 +165,13 @@ void SftpTransfer::doStart()
|
|||||||
link = true;
|
link = true;
|
||||||
d->batchFile.write("-rm " + QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit()
|
d->batchFile.write("-rm " + QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit()
|
||||||
+ '\n');
|
+ '\n');
|
||||||
|
sourceFileOrLinkTarget = fi.dir().relativeFilePath(fi.symLinkTarget()); // see QTBUG-5817.
|
||||||
|
} else {
|
||||||
|
sourceFileOrLinkTarget = f.sourceFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
d->batchFile.write(d->transferCommand(link) + ' '
|
d->batchFile.write(d->transferCommand(link) + ' '
|
||||||
+ QtcProcess::quoteArgUnix(f.sourceFile).toLocal8Bit() + ' '
|
+ QtcProcess::quoteArgUnix(sourceFileOrLinkTarget).toLocal8Bit() + ' '
|
||||||
+ QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit() + '\n');
|
+ QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit() + '\n');
|
||||||
}
|
}
|
||||||
d->batchFile.flush();
|
d->batchFile.flush();
|
||||||
|
@@ -36,7 +36,6 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/temporarydirectory.h>
|
|
||||||
|
|
||||||
#include <QByteArrayList>
|
#include <QByteArrayList>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -149,7 +148,7 @@ struct SshConnection::SshConnectionPrivate
|
|||||||
SshConnectionInfo connInfo;
|
SshConnectionInfo connInfo;
|
||||||
SshProcess masterProcess;
|
SshProcess masterProcess;
|
||||||
QString errorString;
|
QString errorString;
|
||||||
std::unique_ptr<TemporaryDirectory> masterSocketDir;
|
std::unique_ptr<QTemporaryDir> masterSocketDir;
|
||||||
State state = Unconnected;
|
State state = Unconnected;
|
||||||
const bool sharingEnabled = SshSettings::connectionSharingEnabled();
|
const bool sharingEnabled = SshSettings::connectionSharingEnabled();
|
||||||
};
|
};
|
||||||
@@ -351,8 +350,7 @@ void SshConnection::doConnectToHost()
|
|||||||
}
|
}
|
||||||
if (!d->sharingEnabled)
|
if (!d->sharingEnabled)
|
||||||
emitConnected();
|
emitConnected();
|
||||||
QTC_ASSERT(TemporaryDirectory::masterTemporaryDirectory(), return);
|
d->masterSocketDir.reset(new QTemporaryDir);
|
||||||
d->masterSocketDir.reset(new TemporaryDirectory("ssh-XXXXXX"));
|
|
||||||
if (!d->masterSocketDir->isValid()) {
|
if (!d->masterSocketDir->isValid()) {
|
||||||
emitError(tr("Cannot establish SSH connection: Failed to create temporary "
|
emitError(tr("Cannot establish SSH connection: Failed to create temporary "
|
||||||
"directory for control socket: %1")
|
"directory for control socket: %1")
|
||||||
|
@@ -124,10 +124,6 @@ static CreateAvdInfo createAvdCommand(const AndroidConfig config, const CreateAv
|
|||||||
Utils::equal(&SystemImage::abiName, result.abi));
|
Utils::equal(&SystemImage::abiName, result.abi));
|
||||||
if (image && image->isValid()) {
|
if (image && image->isValid()) {
|
||||||
arguments << "-k" << image->sdkStylePath();
|
arguments << "-k" << image->sdkStylePath();
|
||||||
// Google api system images requires explicit abi as
|
|
||||||
// google-apis/ABI or --tag "google-apis"
|
|
||||||
if (image->sdkStylePath().contains(googleApiTag))
|
|
||||||
arguments << "--tag" << googleApiTag;
|
|
||||||
} else {
|
} else {
|
||||||
QString name = result.sdkPlatform->displayText();
|
QString name = result.sdkPlatform->displayText();
|
||||||
qCDebug(avdManagerLog) << "AVD Create failed. Cannot find system image for the platform"
|
qCDebug(avdManagerLog) << "AVD Create failed. Cannot find system image for the platform"
|
||||||
|
@@ -410,19 +410,24 @@ TestResultFilterModel::TestResultFilterModel(TestResultModel *sourceModel, QObje
|
|||||||
m_sourceModel(sourceModel)
|
m_sourceModel(sourceModel)
|
||||||
{
|
{
|
||||||
setSourceModel(sourceModel);
|
setSourceModel(sourceModel);
|
||||||
enableAllResultTypes();
|
enableAllResultTypes(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestResultFilterModel::enableAllResultTypes()
|
void TestResultFilterModel::enableAllResultTypes(bool enabled)
|
||||||
{
|
{
|
||||||
m_enabled << ResultType::Pass << ResultType::Fail << ResultType::ExpectedFail
|
if (enabled) {
|
||||||
<< ResultType::UnexpectedPass << ResultType::Skip << ResultType::MessageDebug
|
m_enabled << ResultType::Pass << ResultType::Fail << ResultType::ExpectedFail
|
||||||
<< ResultType::MessageWarn << ResultType::MessageInternal << ResultType::MessageLocation
|
<< ResultType::UnexpectedPass << ResultType::Skip << ResultType::MessageDebug
|
||||||
<< ResultType::MessageFatal << ResultType::Invalid << ResultType::BlacklistedPass
|
<< ResultType::MessageWarn << ResultType::MessageInternal << ResultType::MessageLocation
|
||||||
<< ResultType::BlacklistedFail << ResultType::BlacklistedXFail << ResultType::BlacklistedXPass
|
<< ResultType::MessageFatal << ResultType::Invalid << ResultType::BlacklistedPass
|
||||||
<< ResultType::Benchmark
|
<< ResultType::BlacklistedFail << ResultType::BlacklistedXFail << ResultType::BlacklistedXPass
|
||||||
<< ResultType::MessageCurrentTest << ResultType::TestStart << ResultType::TestEnd
|
<< ResultType::Benchmark
|
||||||
<< ResultType::MessageInfo << ResultType::MessageSystem << ResultType::Application;
|
<< ResultType::MessageCurrentTest << ResultType::TestStart << ResultType::TestEnd
|
||||||
|
<< ResultType::MessageInfo << ResultType::MessageSystem << ResultType::Application;
|
||||||
|
} else {
|
||||||
|
m_enabled.clear();
|
||||||
|
m_enabled << ResultType::MessageFatal << ResultType::MessageSystem;
|
||||||
|
}
|
||||||
invalidateFilter();
|
invalidateFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -108,7 +108,7 @@ class TestResultFilterModel : public QSortFilterProxyModel
|
|||||||
public:
|
public:
|
||||||
explicit TestResultFilterModel(TestResultModel *sourceModel, QObject *parent = nullptr);
|
explicit TestResultFilterModel(TestResultModel *sourceModel, QObject *parent = nullptr);
|
||||||
|
|
||||||
void enableAllResultTypes();
|
void enableAllResultTypes(bool enabled);
|
||||||
void toggleTestResultType(ResultType type);
|
void toggleTestResultType(ResultType type);
|
||||||
void clearTestResults();
|
void clearTestResults();
|
||||||
bool hasResults();
|
bool hasResults();
|
||||||
|
@@ -493,7 +493,7 @@ void TestResultsPane::checkAllFilter(bool checked)
|
|||||||
if (action->isCheckable())
|
if (action->isCheckable())
|
||||||
action->setChecked(checked);
|
action->setChecked(checked);
|
||||||
}
|
}
|
||||||
m_filterModel->enableAllResultTypes();
|
m_filterModel->enableAllResultTypes(checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestResultsPane::filterMenuTriggered(QAction *action)
|
void TestResultsPane::filterMenuTriggered(QAction *action)
|
||||||
|
@@ -237,7 +237,8 @@ DeploymentData CMakeBuildConfiguration::deploymentData() const
|
|||||||
sourceDir.absolutePath());
|
sourceDir.absolutePath());
|
||||||
for (const CMakeBuildTarget &ct : m_buildTargets) {
|
for (const CMakeBuildTarget &ct : m_buildTargets) {
|
||||||
if (ct.targetType == ExecutableType || ct.targetType == DynamicLibraryType) {
|
if (ct.targetType == ExecutableType || ct.targetType == DynamicLibraryType) {
|
||||||
if (!ct.executable.isEmpty()) {
|
if (!ct.executable.isEmpty()
|
||||||
|
&& !result.deployableForLocalFile(ct.executable.toString()).isValid()) {
|
||||||
result.addFile(ct.executable.toString(),
|
result.addFile(ct.executable.toString(),
|
||||||
deploymentPrefix + buildDir.relativeFilePath(ct.executable.toFileInfo().dir().path()),
|
deploymentPrefix + buildDir.relativeFilePath(ct.executable.toFileInfo().dir().path()),
|
||||||
DeployableFile::TypeExecutable);
|
DeployableFile::TypeExecutable);
|
||||||
|
@@ -524,14 +524,17 @@ void CdbEngine::handleInitialSessionIdle()
|
|||||||
// QmlCppEngine expects the QML engine to be connected before any breakpoints are hit
|
// QmlCppEngine expects the QML engine to be connected before any breakpoints are hit
|
||||||
// (attemptBreakpointSynchronization() will be directly called then)
|
// (attemptBreakpointSynchronization() will be directly called then)
|
||||||
if (rp.breakOnMain) {
|
if (rp.breakOnMain) {
|
||||||
// FIXME:
|
BreakpointParameters bp(BreakpointAtMain);
|
||||||
// const BreakpointParameters bp(BreakpointAtMain);
|
if (rp.startMode == StartInternal || rp.startMode == StartExternal) {
|
||||||
// BreakpointModelId id(quint16(-1));
|
const QString &moduleFileName = Utils::FileName::fromString(rp.inferior.executable)
|
||||||
// QString function = cdbAddBreakpointCommand(bp, m_sourcePathMappings, id, true);
|
.fileName();
|
||||||
// runCommand({function, BuiltinCommand,
|
bp.module = moduleFileName.left(moduleFileName.indexOf('.'));
|
||||||
// [this, id](const DebuggerResponse &r) { handleBreakInsert(r, id); }});
|
}
|
||||||
|
QString function = cdbAddBreakpointCommand(bp, m_sourcePathMappings);
|
||||||
|
runCommand({function, BuiltinCommand, [this](const DebuggerResponse &r) {
|
||||||
|
handleBreakInsert(r, Breakpoint());
|
||||||
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take ownership of the breakpoint. Requests insertion. TODO: Cpp only?
|
// Take ownership of the breakpoint. Requests insertion. TODO: Cpp only?
|
||||||
BreakpointManager::claimBreakpointsForEngine(this);
|
BreakpointManager::claimBreakpointsForEngine(this);
|
||||||
runCommand({".symopt+0x8000"}); // disable searching public symbol table - improving the symbol lookup speed
|
runCommand({".symopt+0x8000"}); // disable searching public symbol table - improving the symbol lookup speed
|
||||||
@@ -866,6 +869,7 @@ void CdbEngine::executeRunToLine(const ContextData &data)
|
|||||||
{
|
{
|
||||||
// Add one-shot breakpoint
|
// Add one-shot breakpoint
|
||||||
BreakpointParameters bp;
|
BreakpointParameters bp;
|
||||||
|
bp.oneShot = true;
|
||||||
if (data.address) {
|
if (data.address) {
|
||||||
bp.type =BreakpointByAddress;
|
bp.type =BreakpointByAddress;
|
||||||
bp.address = data.address;
|
bp.address = data.address;
|
||||||
@@ -875,7 +879,7 @@ void CdbEngine::executeRunToLine(const ContextData &data)
|
|||||||
bp.lineNumber = data.lineNumber;
|
bp.lineNumber = data.lineNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
runCommand({cdbAddBreakpointCommand(bp, m_sourcePathMappings, {}, true), BuiltinCommand,
|
runCommand({cdbAddBreakpointCommand(bp, m_sourcePathMappings), BuiltinCommand,
|
||||||
[this](const DebuggerResponse &r) { handleBreakInsert(r, Breakpoint()); }});
|
[this](const DebuggerResponse &r) { handleBreakInsert(r, Breakpoint()); }});
|
||||||
continueInferior();
|
continueInferior();
|
||||||
}
|
}
|
||||||
@@ -885,7 +889,8 @@ void CdbEngine::executeRunToFunction(const QString &functionName)
|
|||||||
// Add one-shot breakpoint
|
// Add one-shot breakpoint
|
||||||
BreakpointParameters bp(BreakpointByFunction);
|
BreakpointParameters bp(BreakpointByFunction);
|
||||||
bp.functionName = functionName;
|
bp.functionName = functionName;
|
||||||
runCommand({cdbAddBreakpointCommand(bp, m_sourcePathMappings, {}, true), BuiltinCommand,
|
bp.oneShot = true;
|
||||||
|
runCommand({cdbAddBreakpointCommand(bp, m_sourcePathMappings), BuiltinCommand,
|
||||||
[this](const DebuggerResponse &r) { handleBreakInsert(r, Breakpoint()); }});
|
[this](const DebuggerResponse &r) { handleBreakInsert(r, Breakpoint()); }});
|
||||||
continueInferior();
|
continueInferior();
|
||||||
}
|
}
|
||||||
@@ -1947,7 +1952,7 @@ void CdbEngine::handleBreakInsert(const DebuggerResponse &response, const Breakp
|
|||||||
functionName = functionName.mid(functionStart);
|
functionName = functionName.mid(functionStart);
|
||||||
sub->params.functionName = functionName;
|
sub->params.functionName = functionName;
|
||||||
sub->displayName = bp->displayName() + '.' + QString::number(subBreakPointID);
|
sub->displayName = bp->displayName() + '.' + QString::number(subBreakPointID);
|
||||||
runCommand({cdbAddBreakpointCommand(sub->params, m_sourcePathMappings, sub->responseId, false), NoFlags});
|
runCommand({cdbAddBreakpointCommand(sub->params, m_sourcePathMappings, sub->responseId), NoFlags});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2506,10 +2511,10 @@ void CdbEngine::insertBreakpoint(const Breakpoint &bp)
|
|||||||
&& boolSetting(CdbBreakPointCorrection)) {
|
&& boolSetting(CdbBreakPointCorrection)) {
|
||||||
response.lineNumber = int(lineCorrection->fixLineNumber(
|
response.lineNumber = int(lineCorrection->fixLineNumber(
|
||||||
parameters.fileName, unsigned(parameters.lineNumber)));
|
parameters.fileName, unsigned(parameters.lineNumber)));
|
||||||
QString cmd = cdbAddBreakpointCommand(response, m_sourcePathMappings, responseId, false);
|
QString cmd = cdbAddBreakpointCommand(response, m_sourcePathMappings, responseId);
|
||||||
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
||||||
} else {
|
} else {
|
||||||
QString cmd = cdbAddBreakpointCommand(parameters, m_sourcePathMappings, responseId, false);
|
QString cmd = cdbAddBreakpointCommand(parameters, m_sourcePathMappings, responseId);
|
||||||
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
||||||
}
|
}
|
||||||
if (!parameters.enabled)
|
if (!parameters.enabled)
|
||||||
@@ -2564,7 +2569,7 @@ void CdbEngine::updateBreakpoint(const Breakpoint &bp)
|
|||||||
} else {
|
} else {
|
||||||
// Delete and re-add, triggering update
|
// Delete and re-add, triggering update
|
||||||
runCommand({cdbClearBreakpointCommand(bp), NoFlags});
|
runCommand({cdbClearBreakpointCommand(bp), NoFlags});
|
||||||
QString cmd = cdbAddBreakpointCommand(parameters, m_sourcePathMappings, responseId, false);
|
QString cmd = cdbAddBreakpointCommand(parameters, m_sourcePathMappings, responseId);
|
||||||
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
runCommand({cmd, BuiltinCommand, handleBreakInsertCB});
|
||||||
m_pendingBreakpointMap.insert(bp);
|
m_pendingBreakpointMap.insert(bp);
|
||||||
listBreakpoints();
|
listBreakpoints();
|
||||||
|
@@ -122,6 +122,8 @@ static BreakpointParameters fixWinMSVCBreakpoint(const BreakpointParameters &p)
|
|||||||
case BreakpointAtMain: {
|
case BreakpointAtMain: {
|
||||||
BreakpointParameters rc(BreakpointByFunction);
|
BreakpointParameters rc(BreakpointByFunction);
|
||||||
rc.functionName = "main";
|
rc.functionName = "main";
|
||||||
|
rc.module = p.module;
|
||||||
|
rc.oneShot = true;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
} // switch
|
} // switch
|
||||||
@@ -138,8 +140,7 @@ QString breakPointCdbId(const Breakpoint &bp)
|
|||||||
|
|
||||||
QString cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
|
QString cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
|
||||||
const QList<QPair<QString, QString> > &sourcePathMapping,
|
const QList<QPair<QString, QString> > &sourcePathMapping,
|
||||||
const QString &responseId,
|
const QString &responseId)
|
||||||
bool oneshot)
|
|
||||||
{
|
{
|
||||||
const BreakpointParameters params = fixWinMSVCBreakpoint(bpIn);
|
const BreakpointParameters params = fixWinMSVCBreakpoint(bpIn);
|
||||||
QString rc;
|
QString rc;
|
||||||
@@ -154,7 +155,7 @@ QString cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
|
|||||||
str << (params.type == WatchpointAtAddress ? "ba" : "bu")
|
str << (params.type == WatchpointAtAddress ? "ba" : "bu")
|
||||||
<< responseId
|
<< responseId
|
||||||
<< ' ';
|
<< ' ';
|
||||||
if (oneshot)
|
if (params.oneShot)
|
||||||
str << "/1 ";
|
str << "/1 ";
|
||||||
switch (params.type) {
|
switch (params.type) {
|
||||||
case BreakpointAtFork:
|
case BreakpointAtFork:
|
||||||
@@ -249,7 +250,7 @@ void parseBreakPoint(const GdbMi &gdbmi, BreakpointParameters *r,
|
|||||||
r->module = moduleG.data();
|
r->module = moduleG.data();
|
||||||
const GdbMi sourceFileName = gdbmi["srcfile"];
|
const GdbMi sourceFileName = gdbmi["srcfile"];
|
||||||
if (sourceFileName.isValid()) {
|
if (sourceFileName.isValid()) {
|
||||||
r->fileName = sourceFileName.data();
|
r->fileName = Utils::FileUtils::normalizePathName(sourceFileName.data());
|
||||||
const GdbMi lineNumber = gdbmi["srcline"];
|
const GdbMi lineNumber = gdbmi["srcline"];
|
||||||
if (lineNumber.isValid())
|
if (lineNumber.isValid())
|
||||||
r->lineNumber = lineNumber.data().toULongLong(nullptr, 0);
|
r->lineNumber = lineNumber.data().toULongLong(nullptr, 0);
|
||||||
|
@@ -58,7 +58,7 @@ QString breakPointCdbId(const Breakpoint &bp);
|
|||||||
// Convert breakpoint in CDB syntax (applying source path mappings using native paths).
|
// Convert breakpoint in CDB syntax (applying source path mappings using native paths).
|
||||||
QString cdbAddBreakpointCommand(const BreakpointParameters &d,
|
QString cdbAddBreakpointCommand(const BreakpointParameters &d,
|
||||||
const QList<QPair<QString, QString> > &sourcePathMapping,
|
const QList<QPair<QString, QString> > &sourcePathMapping,
|
||||||
const QString &responseId = QString(), bool oneshot = false);
|
const QString &responseId = QString());
|
||||||
QString cdbClearBreakpointCommand(const Breakpoint &bp);
|
QString cdbClearBreakpointCommand(const Breakpoint &bp);
|
||||||
// Parse extension command listing breakpoints.
|
// Parse extension command listing breakpoints.
|
||||||
// Note that not all fields are returned, since file, line, function are encoded
|
// Note that not all fields are returned, since file, line, function are encoded
|
||||||
|
@@ -1038,6 +1038,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
|
|||||||
};
|
};
|
||||||
|
|
||||||
m_breakpointManagerView = new BaseTreeView;
|
m_breakpointManagerView = new BaseTreeView;
|
||||||
|
m_breakpointManagerView->setActivationMode(Utils::DoubleClickActivation);
|
||||||
m_breakpointManagerView->setIconSize(QSize(10, 10));
|
m_breakpointManagerView->setIconSize(QSize(10, 10));
|
||||||
m_breakpointManagerView->setWindowIcon(Icons::BREAKPOINTS.icon());
|
m_breakpointManagerView->setWindowIcon(Icons::BREAKPOINTS.icon());
|
||||||
m_breakpointManagerView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
m_breakpointManagerView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
|
@@ -166,7 +166,13 @@ public:
|
|||||||
Core::Id m_previousMode;
|
Core::Id m_previousMode;
|
||||||
QPointer<QComboBox> m_engineChooser;
|
QPointer<QComboBox> m_engineChooser;
|
||||||
bool m_shuttingDown = false;
|
bool m_shuttingDown = false;
|
||||||
Context m_currentAdditionalContext;
|
|
||||||
|
// This contains the contexts that need to be removed when switching
|
||||||
|
// away from the current engine item. Since the plugin itself adds
|
||||||
|
// C_DEBUGGER_NOTRUNNING on initialization this is set here as well,
|
||||||
|
// so it can be removed when switching away from the initial (null)
|
||||||
|
// engine. See QTCREATORBUG-22330.
|
||||||
|
Context m_currentAdditionalContext{Constants::C_DEBUGGER_NOTRUNNING};
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
@@ -167,18 +167,6 @@ void HelpManager::registerDocumentationNow(QFutureInterface<bool> &futureInterfa
|
|||||||
qWarning() << "Error registering namespace '" << nameSpace
|
qWarning() << "Error registering namespace '" << nameSpace
|
||||||
<< "' from file '" << file << "':" << helpEngine.error();
|
<< "' from file '" << file << "':" << helpEngine.error();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
const QLatin1String key("CreationDate");
|
|
||||||
const QString &newDate = helpEngine.metaData(file, key).toString();
|
|
||||||
const QString &oldDate = helpEngine.metaData(
|
|
||||||
helpEngine.documentationFileName(nameSpace), key).toString();
|
|
||||||
if (QDateTime::fromString(newDate, Qt::ISODate)
|
|
||||||
> QDateTime::fromString(oldDate, Qt::ISODate)) {
|
|
||||||
if (helpEngine.unregisterDocumentation(nameSpace)) {
|
|
||||||
docsChanged = true;
|
|
||||||
helpEngine.registerDocumentation(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
futureInterface.reportResult(docsChanged);
|
futureInterface.reportResult(docsChanged);
|
||||||
|
@@ -144,7 +144,7 @@ void StdIOClientInterface::sendData(const QByteArray &data)
|
|||||||
void StdIOClientInterface::onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
void StdIOClientInterface::onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
||||||
{
|
{
|
||||||
if (exitStatus == QProcess::CrashExit)
|
if (exitStatus == QProcess::CrashExit)
|
||||||
emit error(tr("Crashed with exit code %1: %2").arg(exitCode, m_process.error()));
|
emit error(tr("Crashed with exit code %1: %2").arg(exitCode).arg(m_process.errorString()));
|
||||||
emit finished();
|
emit finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3323,8 +3323,10 @@ void ProjectExplorerPluginPrivate::addNewFile()
|
|||||||
map.insert(QLatin1String(Constants::PREFERRED_PROJECT_NODE), QVariant::fromValue(static_cast<void *>(currentNode)));
|
map.insert(QLatin1String(Constants::PREFERRED_PROJECT_NODE), QVariant::fromValue(static_cast<void *>(currentNode)));
|
||||||
map.insert(Constants::PREFERRED_PROJECT_NODE_PATH, currentNode->filePath().toString());
|
map.insert(Constants::PREFERRED_PROJECT_NODE_PATH, currentNode->filePath().toString());
|
||||||
if (Project *p = ProjectTree::currentProject()) {
|
if (Project *p = ProjectTree::currentProject()) {
|
||||||
QList<Id> profileIds = Utils::transform(p->targets(), &Target::id);
|
const QStringList profileIds = Utils::transform(p->targets(), [](const Target *t) {
|
||||||
map.insert(QLatin1String(Constants::PROJECT_KIT_IDS), QVariant::fromValue(profileIds));
|
return t->id().toString();
|
||||||
|
});
|
||||||
|
map.insert(QLatin1String(Constants::PROJECT_KIT_IDS), profileIds);
|
||||||
map.insert(Constants::PROJECT_POINTER, QVariant::fromValue(static_cast<void *>(p)));
|
map.insert(Constants::PROJECT_POINTER, QVariant::fromValue(static_cast<void *>(p)));
|
||||||
}
|
}
|
||||||
ICore::showNewItemDialog(ProjectExplorerPlugin::tr("New File", "Title of dialog"),
|
ICore::showNewItemDialog(ProjectExplorerPlugin::tr("New File", "Title of dialog"),
|
||||||
@@ -3348,8 +3350,11 @@ void ProjectExplorerPluginPrivate::addNewSubproject()
|
|||||||
Project *project = ProjectTree::currentProject();
|
Project *project = ProjectTree::currentProject();
|
||||||
Core::Id projectType;
|
Core::Id projectType;
|
||||||
if (project) {
|
if (project) {
|
||||||
QList<Id> profileIds = Utils::transform(ProjectTree::currentProject()->targets(), &Target::id);
|
const QStringList profileIds = Utils::transform(ProjectTree::currentProject()->targets(),
|
||||||
map.insert(QLatin1String(Constants::PROJECT_KIT_IDS), QVariant::fromValue(profileIds));
|
[](const Target *t) {
|
||||||
|
return t->id().toString();
|
||||||
|
});
|
||||||
|
map.insert(QLatin1String(Constants::PROJECT_KIT_IDS), profileIds);
|
||||||
projectType = project->id();
|
projectType = project->id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1624,25 +1624,38 @@ void QmakeProFile::applyEvaluate(QmakeEvalResult *evalResult)
|
|||||||
m_wildcardWatcher = std::make_unique<Utils::FileSystemWatcher>();
|
m_wildcardWatcher = std::make_unique<Utils::FileSystemWatcher>();
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
m_wildcardWatcher.get(), &Utils::FileSystemWatcher::directoryChanged,
|
m_wildcardWatcher.get(), &Utils::FileSystemWatcher::directoryChanged,
|
||||||
[this]() {
|
[this](QString path) {
|
||||||
scheduleUpdate();
|
QStringList directoryContents = QDir(path).entryList();
|
||||||
|
if (m_wildcardDirectoryContents.value(path) != directoryContents) {
|
||||||
|
m_wildcardDirectoryContents.insert(path, directoryContents);
|
||||||
|
scheduleUpdate();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
m_wildcardWatcher->addDirectories(
|
const QStringList directoriesToAdd = Utils::filtered<QStringList>(
|
||||||
Utils::filtered<QStringList>(result->directoriesWithWildcards.toList(),
|
result->directoriesWithWildcards.toList(),
|
||||||
[this](const QString &path) {
|
[this](const QString &path) {
|
||||||
return !m_wildcardWatcher->watchesDirectory(path);
|
return !m_wildcardWatcher->watchesDirectory(path);
|
||||||
}), Utils::FileSystemWatcher::WatchModifiedDate);
|
});
|
||||||
|
for (QString path : directoriesToAdd)
|
||||||
|
m_wildcardDirectoryContents.insert(path, QDir(path).entryList());
|
||||||
|
m_wildcardWatcher->addDirectories(directoriesToAdd,
|
||||||
|
Utils::FileSystemWatcher::WatchModifiedDate);
|
||||||
}
|
}
|
||||||
if (m_wildcardWatcher) {
|
if (m_wildcardWatcher) {
|
||||||
if (result->directoriesWithWildcards.isEmpty()) {
|
if (result->directoriesWithWildcards.isEmpty()) {
|
||||||
m_wildcardWatcher.reset();
|
m_wildcardWatcher.reset();
|
||||||
|
m_wildcardDirectoryContents.clear();
|
||||||
} else {
|
} else {
|
||||||
m_wildcardWatcher->removeDirectories(
|
const QStringList directoriesToRemove =
|
||||||
Utils::filtered<QStringList>(m_wildcardWatcher->directories(),
|
Utils::filtered<QStringList>(
|
||||||
|
m_wildcardWatcher->directories(),
|
||||||
[&result](const QString &path) {
|
[&result](const QString &path) {
|
||||||
return !result->directoriesWithWildcards.contains(path);
|
return !result->directoriesWithWildcards.contains(path);
|
||||||
}));
|
});
|
||||||
|
m_wildcardWatcher->removeDirectories(directoriesToRemove);
|
||||||
|
for (QString path : directoriesToRemove)
|
||||||
|
m_wildcardDirectoryContents.remove(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -372,6 +372,7 @@ private:
|
|||||||
QStringList m_featureRoots;
|
QStringList m_featureRoots;
|
||||||
|
|
||||||
std::unique_ptr<Utils::FileSystemWatcher> m_wildcardWatcher;
|
std::unique_ptr<Utils::FileSystemWatcher> m_wildcardWatcher;
|
||||||
|
QMap<QString, QStringList> m_wildcardDirectoryContents;
|
||||||
|
|
||||||
// Async stuff
|
// Async stuff
|
||||||
QFutureWatcher<Internal::QmakeEvalResult *> m_parseFutureWatcher;
|
QFutureWatcher<Internal::QmakeEvalResult *> m_parseFutureWatcher;
|
||||||
|
@@ -140,25 +140,34 @@ bool CustomQmakeProjectWizard::postGenerateFiles(const QWizard *w, const Core::G
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ----------------- BaseQmakeProjectWizardDialog
|
// ----------------- BaseQmakeProjectWizardDialog
|
||||||
BaseQmakeProjectWizardDialog::BaseQmakeProjectWizardDialog(const Core::BaseFileWizardFactory *factory,
|
BaseQmakeProjectWizardDialog::BaseQmakeProjectWizardDialog(
|
||||||
bool showModulesPage, QWidget *parent,
|
const Core::BaseFileWizardFactory *factory,
|
||||||
const Core::WizardDialogParameters ¶meters) :
|
bool showModulesPage,
|
||||||
ProjectExplorer::BaseProjectWizardDialog(factory, parent, parameters),
|
QWidget *parent,
|
||||||
m_profileIds(parameters.extraValues().value(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS))
|
const Core::WizardDialogParameters ¶meters)
|
||||||
.value<QList<Core::Id> >())
|
: ProjectExplorer::BaseProjectWizardDialog(factory, parent, parameters)
|
||||||
{
|
{
|
||||||
|
m_profileIds = Utils::transform(parameters.extraValues()
|
||||||
|
.value(ProjectExplorer::Constants::PROJECT_KIT_IDS)
|
||||||
|
.toStringList(),
|
||||||
|
&Core::Id::fromString);
|
||||||
|
|
||||||
init(showModulesPage);
|
init(showModulesPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseQmakeProjectWizardDialog::BaseQmakeProjectWizardDialog(const Core::BaseFileWizardFactory *factory,
|
BaseQmakeProjectWizardDialog::BaseQmakeProjectWizardDialog(
|
||||||
bool showModulesPage,
|
const Core::BaseFileWizardFactory *factory,
|
||||||
Utils::ProjectIntroPage *introPage,
|
bool showModulesPage,
|
||||||
int introId, QWidget *parent,
|
Utils::ProjectIntroPage *introPage,
|
||||||
const Core::WizardDialogParameters ¶meters) :
|
int introId,
|
||||||
ProjectExplorer::BaseProjectWizardDialog(factory, introPage, introId, parent, parameters),
|
QWidget *parent,
|
||||||
m_profileIds(parameters.extraValues().value(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS))
|
const Core::WizardDialogParameters ¶meters)
|
||||||
.value<QList<Core::Id> >())
|
: ProjectExplorer::BaseProjectWizardDialog(factory, introPage, introId, parent, parameters)
|
||||||
{
|
{
|
||||||
|
m_profileIds = Utils::transform(parameters.extraValues()
|
||||||
|
.value(ProjectExplorer::Constants::PROJECT_KIT_IDS)
|
||||||
|
.toStringList(),
|
||||||
|
&Core::Id::fromString);
|
||||||
init(showModulesPage);
|
init(showModulesPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -89,7 +89,8 @@ bool SubdirsProjectWizard::postGenerateFiles(const QWizard *w, const Core::Gener
|
|||||||
const QString profileName = Core::BaseFileWizardFactory::buildFileName(projectPath, params.fileName, profileSuffix());
|
const QString profileName = Core::BaseFileWizardFactory::buildFileName(projectPath, params.fileName, profileSuffix());
|
||||||
QVariantMap map;
|
QVariantMap map;
|
||||||
map.insert(QLatin1String(ProjectExplorer::Constants::PREFERRED_PROJECT_NODE), profileName);
|
map.insert(QLatin1String(ProjectExplorer::Constants::PREFERRED_PROJECT_NODE), profileName);
|
||||||
map.insert(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS), QVariant::fromValue(wizard->selectedKits()));
|
map.insert(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS),
|
||||||
|
Utils::transform<QStringList>(wizard->selectedKits(), &Core::Id::toString));
|
||||||
IWizardFactory::requestNewItemDialog(tr("New Subproject", "Title of dialog"),
|
IWizardFactory::requestNewItemDialog(tr("New Subproject", "Title of dialog"),
|
||||||
Utils::filtered(Core::IWizardFactory::allWizardFactories(),
|
Utils::filtered(Core::IWizardFactory::allWizardFactories(),
|
||||||
[](Core::IWizardFactory *f) {
|
[](Core::IWizardFactory *f) {
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include "itemlibrarysection.h"
|
#include "itemlibrarysection.h"
|
||||||
|
|
||||||
#include <model.h>
|
#include <model.h>
|
||||||
|
#include <nodehints.h>
|
||||||
#include <nodemetainfo.h>
|
#include <nodemetainfo.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
@@ -184,8 +185,10 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
|
|||||||
qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName);
|
qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool forceVisiblity = valid && NodeHints::fromItemLibraryEntry(entry).visibleInLibrary();
|
||||||
|
|
||||||
if (valid
|
if (valid
|
||||||
&& isItem //We can change if the navigator does support pure QObjects
|
&& (isItem || forceVisiblity) //We can change if the navigator does support pure QObjects
|
||||||
&& (entry.requiredImport().isEmpty()
|
&& (entry.requiredImport().isEmpty()
|
||||||
|| model->hasImport(entryToImport(entry), true, true))) {
|
|| model->hasImport(entryToImport(entry), true, true))) {
|
||||||
QString itemSectionName = entry.category();
|
QString itemSectionName = entry.category();
|
||||||
|
@@ -252,7 +252,7 @@ QList<ModelNode> filteredList(const NodeListProperty &property, bool filter)
|
|||||||
return property.toModelNodeList();
|
return property.toModelNodeList();
|
||||||
|
|
||||||
return Utils::filtered(property.toModelNodeList(), [] (const ModelNode &arg) {
|
return Utils::filtered(property.toModelNodeList(), [] (const ModelNode &arg) {
|
||||||
return QmlItemNode::isValidQmlItemNode(arg);
|
return QmlItemNode::isValidQmlItemNode(arg) || NodeHints::fromModelNode(arg).visibleInNavigator();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -48,6 +48,7 @@
|
|||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
|
||||||
static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos)
|
static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos)
|
||||||
@@ -147,15 +148,21 @@ void NavigatorView::modelAttached(Model *model)
|
|||||||
{
|
{
|
||||||
AbstractView::modelAttached(model);
|
AbstractView::modelAttached(model);
|
||||||
|
|
||||||
m_currentModelInterface->setFilter(
|
|
||||||
DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
|
|
||||||
|
|
||||||
QTreeView *treeView = treeWidget();
|
QTreeView *treeView = treeWidget();
|
||||||
treeView->expandAll();
|
|
||||||
|
|
||||||
treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
treeView->header()->resizeSection(1,26);
|
treeView->header()->resizeSection(1,26);
|
||||||
treeView->setIndentation(20);
|
treeView->setIndentation(20);
|
||||||
|
|
||||||
|
m_currentModelInterface->setFilter(false);
|
||||||
|
|
||||||
|
|
||||||
|
QTimer::singleShot(0, this, [this, treeView]() {
|
||||||
|
m_currentModelInterface->setFilter(
|
||||||
|
DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
|
||||||
|
treeView->expandAll();
|
||||||
|
});
|
||||||
|
|
||||||
#ifdef _LOCK_ITEMS_
|
#ifdef _LOCK_ITEMS_
|
||||||
treeView->header()->resizeSection(2,20);
|
treeView->header()->resizeSection(2,20);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -65,6 +65,8 @@ public:
|
|||||||
bool canBeReparentedTo(const ModelNode &potenialParent);
|
bool canBeReparentedTo(const ModelNode &potenialParent);
|
||||||
QString indexPropertyForStackedContainer() const;
|
QString indexPropertyForStackedContainer() const;
|
||||||
bool takesOverRenderingOfChildren() const;
|
bool takesOverRenderingOfChildren() const;
|
||||||
|
bool visibleInNavigator() const;
|
||||||
|
bool visibleInLibrary() const;
|
||||||
|
|
||||||
QHash<QString, QString> hints() const;
|
QHash<QString, QString> hints() const;
|
||||||
static NodeHints fromModelNode(const ModelNode &modelNode);
|
static NodeHints fromModelNode(const ModelNode &modelNode);
|
||||||
|
@@ -201,6 +201,19 @@ bool NodeHints::takesOverRenderingOfChildren() const
|
|||||||
return evaluateBooleanExpression("takesOverRenderingOfChildren", false);
|
return evaluateBooleanExpression("takesOverRenderingOfChildren", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NodeHints::visibleInNavigator() const
|
||||||
|
{
|
||||||
|
if (!isValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return evaluateBooleanExpression("visibleInNavigator", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NodeHints::visibleInLibrary() const
|
||||||
|
{
|
||||||
|
return evaluateBooleanExpression("visibleInLibrary", true);
|
||||||
|
}
|
||||||
|
|
||||||
QHash<QString, QString> NodeHints::hints() const
|
QHash<QString, QString> NodeHints::hints() const
|
||||||
{
|
{
|
||||||
return m_hints;
|
return m_hints;
|
||||||
|
@@ -75,7 +75,7 @@ static QmlTimeline getTimelineFromTabWidget(QTabWidget *tabWidget)
|
|||||||
|
|
||||||
static void setTabForTimeline(QTabWidget *tabWidget, const QmlTimeline &timeline)
|
static void setTabForTimeline(QTabWidget *tabWidget, const QmlTimeline &timeline)
|
||||||
{
|
{
|
||||||
for (int i = 0; i > tabWidget->count(); ++i) {
|
for (int i = 0; i < tabWidget->count(); ++i) {
|
||||||
QWidget *w = tabWidget->widget(i);
|
QWidget *w = tabWidget->widget(i);
|
||||||
if (qobject_cast<TimelineForm *>(w)->timeline() == timeline) {
|
if (qobject_cast<TimelineForm *>(w)->timeline() == timeline) {
|
||||||
tabWidget->setCurrentIndex(i);
|
tabWidget->setCurrentIndex(i);
|
||||||
@@ -86,7 +86,7 @@ static void setTabForTimeline(QTabWidget *tabWidget, const QmlTimeline &timeline
|
|||||||
|
|
||||||
static void setTabForAnimation(QTabWidget *tabWidget, const ModelNode &animation)
|
static void setTabForAnimation(QTabWidget *tabWidget, const ModelNode &animation)
|
||||||
{
|
{
|
||||||
for (int i = 0; i > tabWidget->count(); ++i) {
|
for (int i = 0; i < tabWidget->count(); ++i) {
|
||||||
QWidget *w = tabWidget->widget(i);
|
QWidget *w = tabWidget->widget(i);
|
||||||
if (qobject_cast<TimelineAnimationForm *>(w)->animation() == animation) {
|
if (qobject_cast<TimelineAnimationForm *>(w)->animation() == animation) {
|
||||||
tabWidget->setCurrentIndex(i);
|
tabWidget->setCurrentIndex(i);
|
||||||
|
@@ -682,11 +682,9 @@ void QmlProfilerTool::clientsDisconnected()
|
|||||||
d->m_profilerModelManager->finalize();
|
d->m_profilerModelManager->finalize();
|
||||||
} else if (d->m_profilerState->serverRecording()) {
|
} else if (d->m_profilerState->serverRecording()) {
|
||||||
// If the application stopped by itself, check if we have all the data
|
// If the application stopped by itself, check if we have all the data
|
||||||
if (d->m_profilerState->currentState() == QmlProfilerStateManager::AppDying ||
|
if (d->m_profilerState->currentState() != QmlProfilerStateManager::AppStopRequested) {
|
||||||
d->m_profilerState->currentState() == QmlProfilerStateManager::Idle) {
|
|
||||||
showNonmodalWarning(tr("Application finished before loading profiled data.\n"
|
showNonmodalWarning(tr("Application finished before loading profiled data.\n"
|
||||||
"Please use the stop button instead."));
|
"Please use the stop button instead."));
|
||||||
d->m_profilerModelManager->clearAll();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -302,6 +302,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
|||||||
m_qmlViewerAspect->setLabelText(tr("QML Viewer:"));
|
m_qmlViewerAspect->setLabelText(tr("QML Viewer:"));
|
||||||
m_qmlViewerAspect->setPlaceHolderText(executable());
|
m_qmlViewerAspect->setPlaceHolderText(executable());
|
||||||
m_qmlViewerAspect->setDisplayStyle(BaseStringAspect::LineEditDisplay);
|
m_qmlViewerAspect->setDisplayStyle(BaseStringAspect::LineEditDisplay);
|
||||||
|
m_qmlViewerAspect->setHistoryCompleter("QmlProjectManager.viewer.history");
|
||||||
|
|
||||||
auto argumentAspect = addAspect<ArgumentsAspect>();
|
auto argumentAspect = addAspect<ArgumentsAspect>();
|
||||||
argumentAspect->setSettingsKey(Constants::QML_VIEWER_ARGUMENTS_KEY);
|
argumentAspect->setSettingsKey(Constants::QML_VIEWER_ARGUMENTS_KEY);
|
||||||
|
@@ -153,12 +153,12 @@ QDateTime GenericDirectUploadService::timestampFromStat(const DeployableFile &fi
|
|||||||
return QDateTime();
|
return QDateTime();
|
||||||
}
|
}
|
||||||
const QByteArrayList columns = output.mid(file.remoteFilePath().toUtf8().size() + 1).split(' ');
|
const QByteArrayList columns = output.mid(file.remoteFilePath().toUtf8().size() + 1).split(' ');
|
||||||
if (columns.size() < 15) { // Normal Linux stat: 16 columns, busybox stat: 15 columns
|
if (columns.size() < 14) { // Normal Linux stat: 16 columns in total, busybox stat: 15 columns
|
||||||
emit warningMessage(warningString);
|
emit warningMessage(warningString);
|
||||||
return QDateTime();
|
return QDateTime();
|
||||||
}
|
}
|
||||||
bool isNumber;
|
bool isNumber;
|
||||||
const qint64 secsSinceEpoch = columns.at(12).toLongLong(&isNumber);
|
const qint64 secsSinceEpoch = columns.at(11).toLongLong(&isNumber);
|
||||||
if (!isNumber) {
|
if (!isNumber) {
|
||||||
emit warningMessage(warningString);
|
emit warningMessage(warningString);
|
||||||
return QDateTime();
|
return QDateTime();
|
||||||
|
@@ -105,8 +105,8 @@ QString RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName()
|
|||||||
Runnable RemoteLinuxCustomRunConfiguration::runnable() const
|
Runnable RemoteLinuxCustomRunConfiguration::runnable() const
|
||||||
{
|
{
|
||||||
ProjectExplorer::Runnable r = RunConfiguration::runnable();
|
ProjectExplorer::Runnable r = RunConfiguration::runnable();
|
||||||
r.extraData.insert("Ssh.X11ForwardToDisplay",
|
if (const auto * const forwardingAspect = aspect<X11ForwardingAspect>())
|
||||||
aspect<X11ForwardingAspect>()->display(macroExpander()));
|
r.extraData.insert("Ssh.X11ForwardToDisplay", forwardingAspect->display(macroExpander()));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -232,7 +232,7 @@ RsyncCommandLine RsyncDeployStep::rsyncCommand(const SshConnection &sshConnectio
|
|||||||
QStringList{SshSettings::sshFilePath().toUserOutput()}
|
QStringList{SshSettings::sshFilePath().toUserOutput()}
|
||||||
<< sshConnection.connectionOptions());
|
<< sshConnection.connectionOptions());
|
||||||
const SshConnectionParameters sshParams = sshConnection.connectionParameters();
|
const SshConnectionParameters sshParams = sshConnection.connectionParameters();
|
||||||
return RsyncCommandLine(QStringList{"-e", sshCmdLine, "-avz"},
|
return RsyncCommandLine(QStringList{"-e", sshCmdLine, "-av"},
|
||||||
sshParams.userName() + '@' + sshParams.host());
|
sshParams.userName() + '@' + sshParams.host());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "highlightersettings.h"
|
#include "highlightersettings.h"
|
||||||
#include "textdocumentlayout.h"
|
#include "textdocumentlayout.h"
|
||||||
|
#include "tabsettings.h"
|
||||||
#include "texteditorsettings.h"
|
#include "texteditorsettings.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
|
|
||||||
#include <DefinitionDownloader>
|
#include <DefinitionDownloader>
|
||||||
#include <Format>
|
#include <Format>
|
||||||
|
#include <FoldingRegion>
|
||||||
#include <Repository>
|
#include <Repository>
|
||||||
#include <SyntaxHighlighter>
|
#include <SyntaxHighlighter>
|
||||||
|
|
||||||
@@ -272,10 +274,16 @@ void Highlighter::highlightBlock(const QString &text)
|
|||||||
{
|
{
|
||||||
if (!definition().isValid())
|
if (!definition().isValid())
|
||||||
return;
|
return;
|
||||||
QTextBlock block = currentBlock();
|
const QTextBlock block = currentBlock();
|
||||||
KSyntaxHighlighting::State state = TextDocumentLayout::userData(block)->syntaxState();
|
KSyntaxHighlighting::State state;
|
||||||
|
setCurrentBlockState(qMax(0, previousBlockState()));
|
||||||
|
if (TextBlockUserData *data = TextDocumentLayout::testUserData(block)) {
|
||||||
|
state = data->syntaxState();
|
||||||
|
data->setFoldingStartIncluded(false);
|
||||||
|
data->setFoldingEndIncluded(false);
|
||||||
|
}
|
||||||
state = highlightLine(text, state);
|
state = highlightLine(text, state);
|
||||||
block = block.next();
|
const QTextBlock nextBlock = block.next();
|
||||||
|
|
||||||
Parentheses parentheses;
|
Parentheses parentheses;
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
@@ -288,8 +296,12 @@ void Highlighter::highlightBlock(const QString &text)
|
|||||||
}
|
}
|
||||||
TextDocumentLayout::setParentheses(currentBlock(), parentheses);
|
TextDocumentLayout::setParentheses(currentBlock(), parentheses);
|
||||||
|
|
||||||
if (block.isValid())
|
if (nextBlock.isValid()) {
|
||||||
TextDocumentLayout::userData(block)->setSyntaxState(state);
|
TextBlockUserData *data = TextDocumentLayout::userData(nextBlock);
|
||||||
|
data->setSyntaxState(state);
|
||||||
|
data->setFoldingIndent(currentBlockState());
|
||||||
|
}
|
||||||
|
|
||||||
formatSpaces(text);
|
formatSpaces(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,3 +309,31 @@ void Highlighter::applyFormat(int offset, int length, const KSyntaxHighlighting:
|
|||||||
{
|
{
|
||||||
setFormat(offset, length, formatForCategory(format.textStyle()));
|
setFormat(offset, length, formatForCategory(format.textStyle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Highlighter::applyFolding(int offset,
|
||||||
|
int length,
|
||||||
|
KSyntaxHighlighting::FoldingRegion region)
|
||||||
|
{
|
||||||
|
if (!region.isValid())
|
||||||
|
return;
|
||||||
|
const QTextBlock &block = currentBlock();
|
||||||
|
const QString &text = block.text();
|
||||||
|
TextBlockUserData *data = TextDocumentLayout::userData(currentBlock());
|
||||||
|
const bool fromStart = TabSettings::firstNonSpace(text) == offset;
|
||||||
|
const bool toEnd = (offset + length) == (text.length() - TabSettings::trailingWhitespaces(text));
|
||||||
|
if (region.type() == KSyntaxHighlighting::FoldingRegion::Begin) {
|
||||||
|
setCurrentBlockState(currentBlockState() + 1);
|
||||||
|
// if there is only a folding begin in the line move the current block into the fold
|
||||||
|
if (fromStart && toEnd) {
|
||||||
|
data->setFoldingIndent(currentBlockState());
|
||||||
|
data->setFoldingStartIncluded(true);
|
||||||
|
}
|
||||||
|
} else if (region.type() == KSyntaxHighlighting::FoldingRegion::End) {
|
||||||
|
setCurrentBlockState(qMax(0, currentBlockState() - 1));
|
||||||
|
// if the folding end is at the end of the line move the current block into the fold
|
||||||
|
if (toEnd)
|
||||||
|
data->setFoldingEndIncluded(true);
|
||||||
|
else
|
||||||
|
data->setFoldingIndent(currentBlockState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -66,6 +66,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void highlightBlock(const QString &text) override;
|
void highlightBlock(const QString &text) override;
|
||||||
void applyFormat(int offset, int length, const KSyntaxHighlighting::Format &format) override;
|
void applyFormat(int offset, int length, const KSyntaxHighlighting::Format &format) override;
|
||||||
|
void applyFolding(int offset, int length, KSyntaxHighlighting::FoldingRegion region) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace TextEditor
|
} // namespace TextEditor
|
||||||
|
@@ -4720,13 +4720,13 @@ void TextEditorWidgetPrivate::paintReplacement(PaintEventData &data, QPainter &p
|
|||||||
replacement.prepend(nextBlock.text().trimmed().at(0));
|
replacement.prepend(nextBlock.text().trimmed().at(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextBlock nextVisibleBlock = TextEditor::nextVisibleBlock(data.block, data.doc);
|
QTextBlock lastInvisibleBlock = TextEditor::nextVisibleBlock(data.block, data.doc).previous();
|
||||||
if (!nextVisibleBlock.isValid())
|
if (!lastInvisibleBlock.isValid())
|
||||||
nextVisibleBlock = data.doc->lastBlock();
|
lastInvisibleBlock = data.doc->lastBlock();
|
||||||
|
|
||||||
if (TextBlockUserData *blockUserData = TextDocumentLayout::testUserData(nextVisibleBlock)) {
|
if (TextBlockUserData *blockUserData = TextDocumentLayout::testUserData(lastInvisibleBlock)) {
|
||||||
if (blockUserData->foldingEndIncluded()) {
|
if (blockUserData->foldingEndIncluded()) {
|
||||||
QString right = nextVisibleBlock.text().trimmed();
|
QString right = lastInvisibleBlock.text().trimmed();
|
||||||
if (right.endsWith(QLatin1Char(';'))) {
|
if (right.endsWith(QLatin1Char(';'))) {
|
||||||
right.chop(1);
|
right.chop(1);
|
||||||
right = right.trimmed();
|
right = right.trimmed();
|
||||||
|
@@ -35,6 +35,8 @@
|
|||||||
|
|
||||||
#include <QtCore/qstring.h>
|
#include <QtCore/qstring.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
namespace QMakeInternal {
|
namespace QMakeInternal {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,3 +55,5 @@ QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey,
|
|||||||
unsigned long options = 0);
|
unsigned long options = 0);
|
||||||
|
|
||||||
} // namespace QMakeInternal
|
} // namespace QMakeInternal
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
@@ -44,7 +44,7 @@ static QSet<Utf8String> unresolvedFilePaths(const QVector<DiagnosticContainer> &
|
|||||||
QSet<Utf8String> unresolved;
|
QSet<Utf8String> unresolved;
|
||||||
|
|
||||||
for (const DiagnosticContainer &diagnostic : diagnostics) {
|
for (const DiagnosticContainer &diagnostic : diagnostics) {
|
||||||
if (diagnostic.severity == DiagnosticSeverity::Fatal
|
if (diagnostic.severity == DiagnosticSeverity::Error
|
||||||
&& diagnostic.category == Utf8StringLiteral("Lexical or Preprocessor Issue")) {
|
&& diagnostic.category == Utf8StringLiteral("Lexical or Preprocessor Issue")) {
|
||||||
const QString path = re.match(diagnostic.text).captured(1);
|
const QString path = re.match(diagnostic.text).captured(1);
|
||||||
if (!path.isEmpty())
|
if (!path.isEmpty())
|
||||||
|
@@ -203,20 +203,13 @@ QVariantMap AddCMakeOperation::addCMake(const QVariantMap &map, const QString &i
|
|||||||
return QVariantMap();
|
return QVariantMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity check: Make sure displayName is unique.
|
|
||||||
QStringList nameKeys = FindKeyOperation::findKey(map, DISPLAYNAME_KEY);
|
|
||||||
QStringList nameList;
|
|
||||||
foreach (const QString &nameKey, nameKeys)
|
|
||||||
nameList << GetOperation::get(map, nameKey).toString();
|
|
||||||
const QString uniqueName = makeUnique(displayName, nameList);
|
|
||||||
|
|
||||||
QVariantMap result = RmKeysOperation::rmKeys(map, {COUNT});
|
QVariantMap result = RmKeysOperation::rmKeys(map, {COUNT});
|
||||||
|
|
||||||
const QString cm = QString::fromLatin1(PREFIX) + QString::number(count);
|
const QString cm = QString::fromLatin1(PREFIX) + QString::number(count);
|
||||||
|
|
||||||
KeyValuePairList data;
|
KeyValuePairList data;
|
||||||
data << KeyValuePair({cm, ID_KEY}, QVariant(id));
|
data << KeyValuePair({cm, ID_KEY}, QVariant(id));
|
||||||
data << KeyValuePair({cm, DISPLAYNAME_KEY}, QVariant(uniqueName));
|
data << KeyValuePair({cm, DISPLAYNAME_KEY}, QVariant(displayName));
|
||||||
data << KeyValuePair({cm, AUTODETECTED_KEY}, QVariant(true));
|
data << KeyValuePair({cm, AUTODETECTED_KEY}, QVariant(true));
|
||||||
data << KeyValuePair({cm, PATH_KEY}, QVariant(path));
|
data << KeyValuePair({cm, PATH_KEY}, QVariant(path));
|
||||||
KeyValuePairList extraList;
|
KeyValuePairList extraList;
|
||||||
|
@@ -204,17 +204,11 @@ QVariantMap AddDebuggerOperation::addDebugger(const QVariantMap &map,
|
|||||||
toRemove << QLatin1String(COUNT);
|
toRemove << QLatin1String(COUNT);
|
||||||
QVariantMap cleaned = RmKeysOperation::rmKeys(map, toRemove);
|
QVariantMap cleaned = RmKeysOperation::rmKeys(map, toRemove);
|
||||||
|
|
||||||
// Sanity check: Make sure displayName is unique.
|
|
||||||
QStringList nameKeys = FindKeyOperation::findKey(map, QLatin1String(DISPLAYNAME));
|
|
||||||
QStringList nameList;
|
|
||||||
foreach (const QString &nameKey, nameKeys)
|
|
||||||
nameList << GetOperation::get(map, nameKey).toString();
|
|
||||||
const QString uniqueName = makeUnique(displayName, nameList);
|
|
||||||
|
|
||||||
// insert data:
|
// insert data:
|
||||||
KeyValuePairList data;
|
KeyValuePairList data;
|
||||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ID), QVariant(id));
|
data << KeyValuePair(QStringList() << debugger << QLatin1String(ID), QVariant(id));
|
||||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(DISPLAYNAME), QVariant(uniqueName));
|
data << KeyValuePair(QStringList() << debugger << QLatin1String(DISPLAYNAME),
|
||||||
|
QVariant(displayName));
|
||||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(AUTODETECTED), QVariant(true));
|
data << KeyValuePair(QStringList() << debugger << QLatin1String(AUTODETECTED), QVariant(true));
|
||||||
|
|
||||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ABIS), QVariant(abis));
|
data << KeyValuePair(QStringList() << debugger << QLatin1String(ABIS), QVariant(abis));
|
||||||
|