Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmlstringconverters.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant
4
6#include <private/qqmlglobal_p.h>
7
8#include <QtCore/qpoint.h>
9#include <QtCore/qrect.h>
10#include <QtCore/qsize.h>
11#include <QtCore/qvariant.h>
12#include <QtCore/qdatetime.h>
13
15
16QVariant QQmlStringConverters::variantFromString(const QString &s, QMetaType preferredType, bool *ok)
17{
18 switch (preferredType.id()) {
19 case QMetaType::Int:
20 return QVariant(int(qRound(s.toDouble(ok))));
21 case QMetaType::UInt:
22 return QVariant(uint(qRound(s.toDouble(ok))));
23#if QT_CONFIG(datestring)
24 case QMetaType::QDate:
25 return QVariant::fromValue(dateFromString(s, ok));
26 case QMetaType::QTime:
27 return QVariant::fromValue(timeFromString(s, ok));
28 case QMetaType::QDateTime:
29 return QVariant::fromValue(dateTimeFromString(s, ok));
30#endif // datestring
31 case QMetaType::QPointF:
32 return QVariant::fromValue(pointFFromString(s, ok));
33 case QMetaType::QPoint:
34 return QVariant::fromValue(pointFFromString(s, ok).toPoint());
35 case QMetaType::QSizeF:
36 return QVariant::fromValue(sizeFFromString(s, ok));
37 case QMetaType::QSize:
38 return QVariant::fromValue(sizeFFromString(s, ok).toSize());
39 case QMetaType::QRectF:
40 return QVariant::fromValue(rectFFromString(s, ok));
41 case QMetaType::QRect:
42 return QVariant::fromValue(rectFFromString(s, ok).toRect());
43 default: {
44 const QVariant ret = QQmlValueTypeProvider::createValueType(s, preferredType);
45 if (ret.isValid()) {
46 if (ok)
47 *ok = true;
48 return ret;
49 }
50 if (ok)
51 *ok = false;
52 return QVariant();
53 }
54 }
55}
56
57QVariant QQmlStringConverters::colorFromString(const QString &s, bool *ok)
58{
59 return QQml_colorProvider()->colorFromString(s, ok);
60}
61
62unsigned QQmlStringConverters::rgbaFromString(const QString &s, bool *ok)
63{
64 return QQml_colorProvider()->rgbaFromString(s, ok);
65}
66
67#if QT_CONFIG(datestring)
68QDate QQmlStringConverters::dateFromString(const QString &s, bool *ok)
69{
70 QDate d = QDate::fromString(s, Qt::ISODate);
71 if (ok) *ok = d.isValid();
72 return d;
73}
74
75QTime QQmlStringConverters::timeFromString(const QString &s, bool *ok)
76{
77 QTime t = QTime::fromString(s, Qt::ISODate);
78 if (ok) *ok = t.isValid();
79 return t;
80}
81
82QDateTime QQmlStringConverters::dateTimeFromString(const QString &s, bool *ok)
83{
84 QDateTime d = QDateTime::fromString(s, Qt::ISODate);
85 if (ok) *ok = d.isValid();
86 return d;
87}
88#endif // datestring
89
90//expects input of "x,y"
91QPointF QQmlStringConverters::pointFFromString(const QString &s, bool *ok)
92{
93 return valueTypeFromNumberString<QPointF, 2, u','>(s, ok);
94}
95
96//expects input of "widthxheight"
97QSizeF QQmlStringConverters::sizeFFromString(const QString &s, bool *ok)
98{
99 return valueTypeFromNumberString<QSizeF, 2, u'x'>(s, ok);
100}
101
102//expects input of "x,y,widthxheight" //### use space instead of second comma?
103QRectF QQmlStringConverters::rectFFromString(const QString &s, bool *ok)
104{
105 return valueTypeFromNumberString<QRectF, 4, u',', u',', u'x'>(s, ok);
106}
107
108QT_END_NAMESPACE
\inmodule QtCore\reentrant
Definition qpoint.h:232
Q_QML_EXPORT unsigned rgbaFromString(const QString &, bool *ok=nullptr)
Combined button and popup list for selecting options.