unity.scopes.qt.QVariantBuilder
Helper class for creating and populating QVariant containers. More...
#include <unity/scopes/qt/QVariantBuilder.h>
Public Member Functions | |
void | add_tuple (std::initializer_list< QPair< QString, QVariant >> const &tuple) |
Adds a tuple of key-value pairs to an array. More... | |
void | add_tuple (QVector< QPair< QString, QVariant >> const &tuple) |
Adds a tuple of key-value pairs to an array. More... | |
QVariant | end () |
Retrieves a completed variant. More... | |
Copy and assignment | |
Copy and assignment operators (move and non-move versions) have the usual value semantics. | |
QVariantBuilder (QVariantBuilder const &other) | |
QVariantBuilder (QVariantBuilder &&other) | |
QVariantBuilder & | operator= (QVariantBuilder const &other) |
QVariantBuilder & | operator= (QVariantBuilder &&other) |
Detailed Description
Helper class for creating and populating QVariant containers.
The main purpose of this class is to ease creation of variant containers needed for QPreviewWidget instances or any other classes that require non-trivial variant definitions.
For example, the value of the "rating" key of the following JSON template
{ <span class="stringliteral">"type"</span>: <span class="stringliteral">"reviews"</span>, ... <span class="stringliteral">"reviews"</span>: [{<span class="stringliteral">"rating"</span>: null, <span class="stringliteral">"review"</span>: null, <span class="stringliteral">"author"</span>: null}] }
can be created with QVariantBuilder as follows:
VariantBuilder builder; builder.add_tuple({{<span class="stringliteral">"rating"</span>, QVariant()}, {<span class="stringliteral">"review"</span>, QVariant()}, {<span class="stringliteral">"author"</span>, QVariant()}});
Member Function Documentation
void QVariantBuilder::add_tuple | ( | std::initializer_list< QPair< QString, QVariant >> const & | tuple | ) |
Adds a tuple of key-value pairs to an array.
It can be used multiple times to create an array of tuples, for example:
[{<span class="stringliteral">"a"</span>: 1, <span class="stringliteral">"b"</span>: 2}, {<span class="stringliteral">"c"</span>: 2, <span class="stringliteral">"d"</span> : 3}]
can be created with:
QVariantBuilder builder; builder.add_tuple({{<span class="stringliteral">"a"</span>, QVariant(1)}, {<span class="stringliteral">"b"</span>, QVariant(2)}}); builder.add_tuple({{<span class="stringliteral">"c"</span>, QVariant(2)}, {<span class="stringliteral">"d"</span>, QVariant(3)}});
void QVariantBuilder::add_tuple | ( | QVector< QPair< QString, QVariant >> const & | tuple | ) |
Adds a tuple of key-value pairs to an array.
This is an overloaded version of add_tuple that accepts QVector
instead of std::initializer_list
.
QVariant QVariantBuilder::end | ( | ) |
Retrieves a completed variant.
Returns the completed variant and resets this builder, so the builder can be re-used.
- Returns
- The completed variant.
- Exceptions
-
unity::LogicException if the builder does not hold a variant.