diff options
Diffstat (limited to 'src/corelib/doc/snippets/qmetatype/registerConverters.cpp')
-rw-r--r-- | src/corelib/doc/snippets/qmetatype/registerConverters.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/corelib/doc/snippets/qmetatype/registerConverters.cpp b/src/corelib/doc/snippets/qmetatype/registerConverters.cpp index 5c5e76c7b0..f53d04b7a6 100644 --- a/src/corelib/doc/snippets/qmetatype/registerConverters.cpp +++ b/src/corelib/doc/snippets/qmetatype/registerConverters.cpp @@ -1,6 +1,7 @@ // Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +#include <QJsonObject> #include <QMetaType> #include <QString> @@ -50,5 +51,12 @@ int main() { QMetaType::registerConverter<CustomStringType, QString>([](const CustomStringType &str) { return QString::fromUtf8(str.data()); }); + QMetaType::registerConverter<QJsonValue, QPointF>( + [](const QJsonValue &value) -> std::optional<QPointF> { + const auto object = value.toObject(); + if (!object.contains("x") || !object.contains("y")) + return std::nullopt; // The conversion fails if the required properties are missing + return QPointF{object["x"].toDouble(), object["y"].toDouble()}; + }); //! [unaryfunc] } |