summaryrefslogtreecommitdiffstats
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
* Android: SDK SupportLeander Beernaert2019-06-052-0/+32
| | | | | | | | | | | | | | | Enable building androiddeployqt when performing host builds only. Added QtPlatformAndroid.cmake to locate Java and the setup the android SDK platform when building on android. Install the androiddeployqt support files when performing a host build. Added ANDROID_SDK_ROOT configuration variable for specifying the android sdk directory. Generating the deployment-settings.json will be done in another change. Change-Id: I1bf15315af4ed904d2fb1d22b0e8e834df32d6ed Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2019-06-0325-473/+623
|\ | | | | | | | | | | Take 5. Change-Id: Ifb2d20e95ba824e45e667fba6c2ba45389991cc3
| * uic/Python: Fix tab stop/Z-Order and buddy handlingFriedemann Kleint2019-05-084-42/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code compared the attribute names of the properties against the m_registeredWidgets hash which contained the qualified names (self.widget) and thus reported errors without actually generating anything. Replace the m_registeredWidgets hash by a lookup of the attribute name in the m_widgets hash and add a function widgetVariableName() returning the qualified variable name for an attribute name and use that for the checks. Remove unused m_registeredActions hash and rename some variables to make it clearer. Task-number: PYSIDE-797 Change-Id: Id31d95c1141d21c51eb85bcd8f8fc63486eb36a5 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * qlalr: replace a QMap-wrapping OrderedSet with std::setMarc Mutz2019-05-143-96/+6
| | | | | | | | | | | | | | | | | | | | | | Why roll your own if you can use the original. The clone was even designed to be API-compatible with std::set, so porting is trivial, except for the unholy int/size_t mismatch, which requires a few casts. Change-Id: Ieb99cbc019ef387c6901d7518d1e79585169b638 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| * Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-05-151-1/+2
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qfloat16.cpp src/corelib/global/qfloat16.h src/plugins/platforms/windows/qwindowswindow.cpp Change-Id: I0938aaa6a9771f55e48c95ed29f6f5291431b947
| | * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-121-1/+2
| | |\ | | | | | | | | | | | | Change-Id: I0c00ffe0eabebc919f22d6faa4bf958b288e8fd9
| | | * Make moc grok binary literals with digit separatorsVille Voutilainen2019-05-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-75656 Change-Id: I6011ef2fb07497cc2a055d6828a1b6356927c281 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | Add qurlquery.cpp to the bootstrap libraryUlf Hermann2019-05-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This amends change 587bdd144b7e574e57f17167808774fa9783ee78. As we have added QUrl we should also add QUrlQuery because the former uses the latter. Change-Id: Iab3b0cb91ef65e673c6c2db4c30fad5660ff30fd Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | uic/Python: Generate empty strings as "" instead of QString()Friedemann Kleint2019-05-081-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: PYSIDE-797 Change-Id: I4ce12ba01318e5ed7e88178dfd2450d9fe78c708 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | Deprecate conversion functions between QList and QSetLars Knoll2019-05-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Users should use range constructors instead to do the conversion. Keep conversion methods between QList and QVector as these will turn into a no-op in Qt 6, whereas forcing people to use range constructors would lead to deep copies of the data. Change-Id: Id9fc9e4d007044e019826da523e8418857c91283 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Add QUrl to bootstrap setUlf Hermann2019-05-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QML language server needs to use QUrl as that is what the language server protocol uses to specify files. As we cannot implicitly cast char to QChar in the bootstrap library, we need to apply a build fix in qipaddress.cpp. Change-Id: Ifaf8421457b1f734402b5aad965ecdec764a73e8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
| * | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-05-071-0/+7
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qobject.cpp src/corelib/kernel/qvariant.h src/corelib/tools/qlist.h Done-With: Milian Wolff <milian.wolff@kdab.com> Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io> Change-Id: I6803f7239aa137a51a7467fab7cc7a01302a848d
| | * | Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into ↵Liang Qi2019-05-031-0/+2
| | |\ \ | | | | | | | | | | | | | | | refs/staging/5.13
| | | * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-05-031-0/+2
| | | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/pcre2/qt_attribution.json Change-Id: Ibae941cb12662f27bd6962ee02bc235971c59a15
| | | | * Android: Copy extra libs in aux modeBogDan Vatra2019-05-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ibbdd6b9c23c094923bc60a8a013f3ac356444510 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| | * | | androiddeployqt: print qmlimportscanner command in verbose modeMitch Curtis2019-05-031-0/+5
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This helps debugging import issues, and will produce output like this: Running qmlimportscanner with the following command: /media/dev2/qt5.13-android-x86-debug/qtbase/bin/qmlimportscanner -rootPath /media/dev2/qt5.13/qtquickcontrols2/tests/auto/customization/ -importPath /media/dev2/qt5.13-android-x86-debug/qtbase/qml /media/dev2/qt5.13/qtquickcontrols2/tests/auto/customization/ Task-number: QTBUG-73572 Change-Id: I3c8fe16cb76f1b11913a3b9cc98470f6071438ab Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Deprecate providing a function as a property flagLars Knoll2019-05-031-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Property flags such as SCRIPTABLE should not get controlled by a function. I can't see this feature being used anywhere and it leads to additional overhead that I'd like to get rid of for Qt 6. Change-Id: Iaa10b2b3bfb7eec11401f7b6bb887c9467b67183 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Prefix textstream operators with Qt::Lars Knoll2019-05-029-322/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As the non prefixed variants are deprecated Change-Id: I2ba09d71b9cea5203b54297a3f2332e6d44fedcf Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * | | Moc: compile generate_keywords with corelib onlyGiuseppe D'Angelo2019-05-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It does not depend on QtGui. Change-Id: If7b01d1a6d2ce3945562f4480177ce883abfdbf4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-04-271-1/+1
| |\| | | | | | | | | | | | | | Change-Id: I1c9449ab064deed1367a7e5dbedfcb489f28140e
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-04-261-1/+1
| | |\| | | | | | | | | | | | | Change-Id: I6ecf7074eda57ef4954fb3fdc7a6d1e8cd229340
| | | * Revert "androiddeployqt: Do not check for stdcpp-path in auxiliary mode"BogDan Vatra2019-04-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | stdcpp-path is needed to set the correct stdc++ library in libs.xml file. This reverts commit 1366c4f04645d74e83847687adcf61ecfa20b3d2. Change-Id: I79b398c5d97c1e98bf503ef7b95b2e9f0f18bc11 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * | | uic: Fix missing Python import for QFontComboBoxFriedemann Kleint2019-04-241-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It requires QFontDatabase from QtGui. Add more classes from QtGui. Fixes: PYSIDE-994 Change-Id: Ib84c86e2305fad60560a3f12997eb1e46deb67cb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | QRegExp include cleanupSamuel Gaist2019-04-194-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRegExp includes can be found in several files where there's not even a use of the class. This patch aims to avoid needless includes as well as follow the "include only what you use" moto. This patch removes a QRegExp include from the QStringList header which means that there is likely going to be code breaking since QStringList is used in many places and would get QRegExp in. [ChangeLog][Potentially Source-Incompatible Changes] qstringlist.h no longer includes qregexp.h. Change-Id: I32847532f16e419d4cb735ddc11a26551127e923 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Rerun pro2cmake on projects that use .ui filesAlexandru Croitor2019-05-221-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-75875 Change-Id: I95109b07fc4a6e09fe7911a21fc5f27f2c895d77 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CMake Build Bot
* | | | Export tool config and target files for each relevant moduleAlexandru Croitor2019-05-029-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CMake will now generate config and target files for each module that provides tools. As a result, namespaced global targets such as Qt5::moc or Qt5::rcc can be made available. Third party projects that require just these tools, and not the Qt modules themselves, should specify CMAKE_PREFIX_PATH pointing to the installed Qt location, and call find_package(Qt5CoreTools), find_package(Qt5GuiTools), etc. It is also possible to call find_package(Qt5Tools REQUIRED Core Widgets) where the last option is a list of modules whose tools should be imported. Note that all the tools are in the Qt5:: namespace and not in the Qt5CoreTools:: or Qt5WidgetsTools:: namespace. This commit also changes the behavior regarding when to build tools while building Qt itself. When cross compiling Qt (checked via CMAKE_CROSSCOMPILING) or when -DQT_FORCE_FIND_TOOLS=TRUE is passed, tools added by add_qt_tool will always be searched for and not built. In this case the user has to specify the CMake variable QT_HOST_PATH pointing to an installed host Qt location. When not cross compiling, tools added by add_qt_tool are built from source. When building leaf modules (like qtsvg) that require some tool that was built in qtbase (like moc), the module project should contain a find_package(Qt5ToolsCore) call and specify an appropriate CMAKE_PREFIX_PATH so that the tool package is found. Note that because HOST_QT_TOOLS_DIRECTORY was replaced by QT_HOST_PATH, the ensure syncqt code was changed to make it work properly with both qtbase and qtsvg. Here's a list of tools and their module associations: qmake, moc, rcc, tracegen, qfloat16-tables, qlalr -> CoreTools qvkgen -> GuiTools uic -> WidgetTools dbus related tools -> DBusTools Task-number: QTBUG-74134 Change-Id: Ie67d1e2f8de46102b48eca008f0b50caf4fbe3ed Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | | | Merge remote-tracking branch 'gerrit/dev' into wip/cmakeTobias Hunger2019-04-164-63/+103
|\| | | | | | | | | | | | | | | Change-Id: I2e1812e4f40131ff74919aa3b558db5c261fe412
| * | | uic: Do not generate Q_UNUSED for PythonFriedemann Kleint2019-04-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: PYSIDE-797 Change-Id: Id269af024c03c2c586d440659bb6c49c3d6eedc6 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Port WriteInitialization::writeBrush() be able to generate PythonFriedemann Kleint2019-04-121-19/+27
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: PYSIDE-797 Change-Id: I7c4e204a5ac9be2dee8f06c38323a15a0372fe5c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Refactor WriteInitialization::writeIconProperties() and add PythonFriedemann Kleint2019-04-121-43/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfold the function with returns to reduce nesting and add language handling. Task-number: PYSIDE-797 Change-Id: Ie6c47745b118d75c0bb2c9eea7d52c8f0377f1a6 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | moc: Add a standard way of specifying a URI as part of Q_PLUGIN_METADATAUlf Hermann2019-04-113-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Usually, when you load a plugin, you don't want to load just any plugin that fulfills a given interface, but rather a specific one. When loading dynamic plugins you can differentiate the plugins by file name. This doesn't work in the static case, and file names are also separate from the plugin metadata shipped inside the plugin files. To solve this problem, different hacks have been developed in various places. QML extension plugins add a special property "uri" via the -M option of moc, QML debug plugins expect you to add a json file with an array of "Keys", Qt Creator plugins have a "Name" in their json files, etc. By allowing the identifier for the plugin to be specified inline with the metadata declaration we can make many of the above workarounds obsolete and provide a clean way for users to find their plugins. Task-number: QTBUG-74775 Change-Id: Ie2af16c49d4c5aa5a77fab0fae1e0a4449bd7a39 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | | Merge commit 'dev' into 'wip/cmake-merge'Tobias Hunger2019-04-1652-1139/+2587
|\| | | | | | | | | | | | | | | Change-Id: I176c40d031be26a1dd1cf08843e448a660598783
| * | | Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-04-104-17/+47
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/win32-clang-msvc/qmake.conf src/gui/image/qpnghandler.cpp Change-Id: Ied79d02912ffb3a307a99483df7db08c7f9d0cd8
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-04-064-17/+47
| | |\| | | | | | | | | | | | | Change-Id: Iec860bb703f983b7438e67c695b9c454e72b3e0f
| | | * Forward declare all types required for compilation with `-trace`Milian Wolff2019-04-054-17/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes compilation with `-trace lttng` or `-trace etw`. We need to forward declare QEvent, QImageReader etc., otherwise the types will be unknown while compiling the trace points. In order to handle this generically, the tracegen utility is extended to support a 'prefix text' in the `*.tracepoints` input files. Any text within curly braces will be embedded as-is in the generated file. This can then be used to add forward declarations for the types we need, including potential namespaces and such. Change-Id: I5cb16763ce0fcb48ce3ea4577578d468ff3a4f4b Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
| * | | uic: Fix enum values for PythonFriedemann Kleint2019-04-083-77/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a helper for replacing "::" by "." for Python. Task-number: PYSIDE-797 Change-Id: I017d430b0b8b2ffbbd3300d583603924fee4d479 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Port method calls to pythonFriedemann Kleint2019-04-083-128/+228
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the language helper for dereferencing pointers and end of line. Task-number: PYSIDE-797 Change-Id: Icbca9015f2a3e8800ad4a56edf8fef9ee43f4528 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Adapt connection syntax to PythonFriedemann Kleint2019-04-054-18/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend WriteInitialization::findDeclaration() to return the class name (on this occasion preparing for generating Qt 5 connection syntax) and add a helper function for formatting the connection. Task-number: PYSIDE-797 Change-Id: I7507f604c8275c93d347b7a6a5d5b5a2a5f3ffd5 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Add qualification with "self." for PythonFriedemann Kleint2019-04-052-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prepend "self." (this) to the name stored in the class Driver's hashes as specifying it is mandatory in Python. Task-number: PYSIDE-797 Change-Id: I1da110b84b2d1131ee6af915f9cc4ba21d7de710 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Add pythonFriedemann Kleint2019-04-0513-48/+630
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add command line option - Add import (include) handling - Add language helpers like streamable classes for Function definition, object instantiation - Implement header comment formatting Task-number: PYSIDE-797 Change-Id: I15041ab16504ea159f6665781a829cd548585af1 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | uic: Refactor string constant formattingFriedemann Kleint2019-04-054-117/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor the fixString() helper, moving the code into a streamable class using a helper which can be used for different encodings. Task-number: PYSIDE-797 Change-Id: I0f82945b6b334da8524882dda2f104327eba79d4 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-04-031-3/+3
| |\| | | | | | | | | | | | | | Change-Id: I99a27f9a0402e1ccad45a2d062d784f8d9a08dd3
| | * | Fix remaining Q_DECL_OVERRIDE instancesAllan Sandfeld Jensen2019-04-021-3/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: I512ea5a6c8cf2928b276af7f83f00a1df5879595 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * | | uic: Refactor reverse name lookupFriedemann Kleint2019-04-023-27/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a helper routine to look up the dom classes by attribute name and change Driver::widgetByName() and Driver::actionByName() to use that as does Driver::actionGroupByName() (all these functions are called with names from the XML files). Remove the name normalization in WriteInitialization::findDeclaration() and refactor WriteInitialization::acceptActionRef() to call findOrInsert() to correctly use the unique name. Task-number: PYSIDE-797 Change-Id: I34058361964719c442182faf798f055f11b40412 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * | | Merge remote-tracking branch 'origin/5.13' into devFriedemann Kleint2019-03-261-1/+1
| |\| | | | | | | | | | | | | | Change-Id: I38389a69411f4549fed432f1181dbe23398b34a2
| | * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-03-201-1/+1
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qplatformintegration.cpp src/gui/kernel/qplatformintegration.h src/plugins/platforms/wasm/qwasmintegration.cpp src/plugins/platforms/xcb/qxcbconnection_screens.cpp Change-Id: I15063d42e9a1e226d9d2d2d372f75141b84c5c1b
| | | * Merge remote-tracking branch 'origin/5.12.2' into 5.12Qt Forward Merge Bot2019-03-151-1/+1
| | | |\ | | | | | | | | | | | | | | | Change-Id: I5f9d8090a07056411fb65d7de60eb679d00e99a3
| | | | * Merge 5.12 into 5.12.2Kari Oikarinen2019-02-202-4/+13
| | | | |\ | | | | | | | | | | | | | | | | | | Change-Id: I3a5721aebd3afd8fa08d3f3df6bf61502fa9c347
| | | | * | androiddeployqt: Do not check for stdcpp-path in auxiliary modeChristian Kandeler2019-02-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: QBS-1429 Change-Id: I189bc42fdee5e63f55705084247fbfc4448a6b65 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * | | | | rcc: Avoid raw string literalshjk2019-03-201-23/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Subjective, but for me its easier to follow code flow if indentation is not interrupted. Change-Id: If811ba1b975189c94a671627be8eb3a1fd67aeb9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>