Qt6/Example-Guideline: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Replaced content with "Category:Developing Qt::Examples This page is obsolete and deprecated. For Qt 6 information, see Qt Examples Guidelines")
Tags: Replaced Visual edit
 
(73 intermediate revisions by 12 users not shown)
Line 1: Line 1:
''When creating or updating Qt examples, developer should consider the best practises and guidelines listed in this document.
[[Category:Developing Qt::Examples]]
''
This page is obsolete and deprecated. For Qt 6 information, see [[Qt Examples Guidelines]]
 
== Evaluate if the example is meaningful or should it be removed/merged ==
 
'''MANDATORY'''
* Check if there are similar examples for the same topic and consider if both are really needed or should the other one be merged with the other.
* Check also documentation on the topic and if that includes inline code snippet that would be adequate instead of complete example.
 
== No C++ or qml warnings ==
 
'''MANDATORY'''
* Example's C++ code should be by minimum compiled with the same compiler warning flags as Qt.
* Use qmllint for qml code: https://doc-snapshots.qt.io/qt6-dev/qtquick-tool-qmllint.html
* Enable compiler warnings and check if the reported issues are fixable with meaningful effort. 
 
 
'''RECOMMENDED'''
<br>
Consider also the compilation with the more strict warning flags and fix the found issues.
<br>
GCC
* Use -Wall and consider -Wextra parameter: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
 
Clang
* Use -Weverything compiler parameter: https://clang.llvm.org/docs/UsersManual.html#diagnostics-enable-everything
 
Visual Studio
* Use /Wall compiler parameter: https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level
 
== Qt6 best practises and changes ==
<br>
'''MANDATORY'''
<br>
* Check the porting guide for Qt6: https://doc.qt.io/qt-6/portingguide.html
* Ensure the example complies with the Qt 6 porting guides for each module the example is using: https://doc.qt.io/qt-6/modulechanges.html
* Check the best practises for QtQML & QtQuick: https://doc-snapshots.qt.io/qt6-dev/qtquick-bestpractices.html
* Do not use versions in QML import statements. This is usally a left-over from Qt 5.
 
== Leveraging C++17 ==
<br>
'''RECOMMENDED'''
<br>
* Prefer signal/slot connection with lambdas: https://doc.qt.io/qt-6/signalsandslots.html
* Check Qt Coding conventions: https://wiki.qt.io/Coding_Conventions
* Consider using clazy plugin (comes also with Qt Creator): https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-clazy-checks
 
== Naming the example, categorisation and adding keywords ==
<br>
'''MANDATORY'''
<br>
 
* Don't add Qt module name or "Example" word to the example name. e.g. QtWidgets Application Example → Text editor application
** Note: If the part of the module name really needs to be used due to clearly describing functionality, that can still be done (e.g. Simple CoAP Client Example from Qt CoAP module)
* Add example application to correct category, for instance by adding '\meta category {Graphics & UI}' below '\examples'
 
  \example My Example
  \meta category {My Category}
 
Will end up as
  <categories>
    <category>My Category</category>
  </categories>
 
in the <example> section of the respective examples-manifest.xml file.
<br>
For further details see: https://codereview.qt-project.org/c/qt/qttools/+/447246
 
<br>
'''RECOMMENDED'''
<br>
* Confirm that the example shows up in Qt Creator welcome screen.
* Check that the example description text shown in Creator contains the right keywords for users to find it.
* Add appropriate tags to the example, for instance by adding '\meta tags {tag1,tag2}' below '\examples'.
* Tags are used to set additional keywords for the example which makes it easier to search in Qt Creator example view
** Don't add redundant information as tags which is already part of the category, example name or description
** Don't add platform information in the tags

Latest revision as of 15:22, 20 November 2024

This page is obsolete and deprecated. For Qt 6 information, see Qt Examples Guidelines