qt5base-lts/examples
Marc Mutz 5a3ac484db savegame ex.: revamp the way we (de)serialize JSON
JSON, unlike, say, QDataStream, allows building up objects independent
of some central object, and combining them into a QJsonDocument
later. This suggests returning QJsonObjects from a toJson() const
method instead of having the caller supply a QJsonObject. Doing it
this way enables transparent move semantics to kick in, too.

For deserialization, use a fromJson() named constructor for value-like
classes (where identity doesn't matter, only equality). Keep using
read(), too, and add a note to explain when to use which form.

Also, avoid the triple lookup from

   if (json.contains("key") && json["key"].isSoughtType())
      mFoo = json["key"].toSoughtType();

by using C++17 if-with-initializer and showing the trick with
Undefined never being of isSoughtType():

   if (const QJsonValue v = json["key"]; v.isSoughtType())
      mFoo = v.toSoughtType();

Adjust the discussion to match the new code, up the copyright years
and rename some qdoc snippet markers from nondescript [0]/[1] to
[toJson]/[fromJson].

Task-number: QTBUG-108857
Pick-to: 6.5 6.4 6.2
Change-Id: Icaa14acc7464fef00a59534679d710252e921383
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-03 21:36:14 +02:00
..
aggregate
corelib savegame ex.: revamp the way we (de)serialize JSON 2023-05-03 21:36:14 +02:00
dbus complexpingpong example: Modernize the code 2023-03-28 19:42:01 +02:00
embedded examples: port embedded examples to new connection style 2022-12-21 21:52:17 +01:00
gui Remove "Analog Clock Window Example" 2023-02-07 17:34:42 +00:00
network Torrent example: update usage of integer types 2023-04-11 18:25:42 +01:00
opengl Examples: Use versioned CMake targets for Qt modules 2023-05-02 16:20:08 +02:00
qmake examples: port qmake examples to new connection style 2022-12-21 22:52:17 +02:00
qpa Examples: Add missing include guards 2023-02-01 18:12:36 +00:00
qtconcurrent Rework imagescaling example to avoid potential crashes 2023-04-26 19:27:30 +02:00
qtestlib Examples: Use PRIVATE CMake linkage 2022-11-30 14:48:50 +01:00
sql examples: Connect Quit action to QCoreApplication::quit, not QWidget::close 2023-02-20 15:18:18 +01:00
vulkan Docs: don't link to removed example 2023-04-11 14:37:36 +02:00
widgets Doc: Use the \examplecategory macro to tag examples 2023-04-11 17:25:42 +00:00
xml Move streambookmarks example into corelibe/serialization 2023-03-31 13:26:42 +02:00
CMakeLists.txt Examples: Use Qt6:: to qualify Qt CMake packages 2022-11-17 19:59:11 +01:00
examples.pro Turn off the dbus examples for qmake-generated VS projects 2021-02-09 15:45:06 +01:00
README

Qt is supplied with a number of example applications that have been
written to provide developers with examples of the Qt API in use,
highlight good programming practice, and showcase features found in each of
Qt's core technologies.


Documentation for examples can be found in the Examples section
of the Qt documentation.