[Development] New Qt example development guideline and revamping examples
Giuseppe D'Angelo
giuseppe.dangelo at kdab.com
Wed Jan 18 13:12:39 CET 2023
On 18/01/2023 10:51, Kimmo Leppälä via Development wrote:
> Also, the guideline is a living document in wiki and we would be happy
> to hear feedback and proposals for it!
>
Here's a few considerations:
> RECOMMENDED
> Consider also compiling with the more strict warning flags and fix any issues they reveal.
As history shows, this is not going to happen unless we enforce it. The
cmake-magic macros that are used to build examples should set those more
strict flags and enforce them (-Werror).
> Clang
> Use -Weverything compiler parameter
> Visual Studio
> Use /Wall compiler parameter
These aren't good recommendations. There's basically no code that
survives those flags, incl. libc++/MS-STL own headers.
> RECOMMENDED
>
> Prefer signal/slot connection with lambdas: https://doc.qt.io/qt-6/signalsandslots.html
All the contrary, do NOT do that, as it results in 200+ lines unnamed
lambdas. Strongly prefer named slots. Keep the lambdas short and to the
point. Do not use unnamed lambdas.
> Check Qt Coding conventions: https://wiki.qt.io/Coding_Conventions
This shouldn't be "recommended" but mandatory. We must follow the same
style in examples as we do in the rest of our code.
> Consider using clazy plugin (comes also with Qt Creator): https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-clazy-checks
This should also be mandatory and enforced by CI.
> Add example application to correct category, for instance by adding '\meta category {Graphics & UI}' below '\examples'
Is there a list of categories to pick from?
> MANDATORY
>
> Do not use QT_BEGIN_NAMESPACE ... QT_END_NAMESPACE for example types. This namespace is exclusively for types in the Qt libraries.
This is broken. How is one going to correctly forward declare Qt names
in a namespaced build of Qt without using those macros? Is there perhaps
a more comprehensive discussion regarding how to write examples that
cope with namespaced Qt builds?
Thank you,
--
Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4244 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.qt-project.org/pipermail/development/attachments/20230118/4453b548/attachment.bin>
More information about the Development
mailing list