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
5#include <private/qqmlglobal_p.h>
6
7#include <QtCore/qpoint.h>
8#include <QtCore/qrect.h>
9#include <QtCore/qsize.h>
10#include <QtCore/qvariant.h>
11#include <QtCore/qdatetime.h>
12
14
15QVariant QQmlStringConverters::variantFromString(const QString &s, QMetaType preferredType, bool *ok)
16{
17 switch (preferredType.id()) {
18 case QMetaType::Int:
19 return QVariant(int(qRound(s.toDouble(ok))));
20 case QMetaType::UInt:
21 return QVariant(uint(qRound(s.toDouble(ok))));
22#if QT_CONFIG(datestring)
23 case QMetaType::QDate:
24 return QVariant::fromValue(dateFromString(s, ok));
25 case QMetaType::QTime:
26 return QVariant::fromValue(timeFromString(s, ok));
27 case QMetaType::QDateTime:
28 return QVariant::fromValue(dateTimeFromString(s, ok));
29#endif // datestring
30 case QMetaType::QPointF:
31 return QVariant::fromValue(pointFFromString(s, ok));
32 case QMetaType::QPoint:
33 return QVariant::fromValue(pointFFromString(s, ok).toPoint());
34 case QMetaType::QSizeF:
35 return QVariant::fromValue(sizeFFromString(s, ok));
36 case QMetaType::QSize:
37 return QVariant::fromValue(sizeFFromString(s, ok).toSize());
38 case QMetaType::QRectF:
39 return QVariant::fromValue(rectFFromString(s, ok));
40 case QMetaType::QRect:
41 return QVariant::fromValue(rectFFromString(s, ok).toRect());
42 default: {
43 const QVariant ret = QQmlValueTypeProvider::createValueType(s, preferredType);
44 if (ret.isValid()) {
45 if (ok)
46 *ok = true;
47 return ret;
48 }
49 if (ok)
50 *ok = false;
51 return QVariant();
52 }
53 }
54}
55
56QVariant QQmlStringConverters::colorFromString(const QString &s, bool *ok)
57{
58 return QQml_colorProvider()->colorFromString(s, ok);
59}
60
61unsigned QQmlStringConverters::rgbaFromString(const QString &s, bool *ok)
62{
63 return QQml_colorProvider()->rgbaFromString(s, ok);
64}
65
66#if QT_CONFIG(datestring)
67QDate QQmlStringConverters::dateFromString(const QString &s, bool *ok)
68{
69 QDate d = QDate::fromString(s, Qt::ISODate);
70 if (ok) *ok = d.isValid();
71 return d;
72}
73
74QTime QQmlStringConverters::timeFromString(const QString &s, bool *ok)
75{
76 QTime t = QTime::fromString(s, Qt::ISODate);
77 if (ok) *ok = t.isValid();
78 return t;
79}
80
81QDateTime QQmlStringConverters::dateTimeFromString(const QString &s, bool *ok)
82{
83 QDateTime d = QDateTime::fromString(s, Qt::ISODate);
84 if (ok) *ok = d.isValid();
85 return d;
86}
87#endif // datestring
88
89//expects input of "x,y"
90QPointF QQmlStringConverters::pointFFromString(const QString &s, bool *ok)
91{
92 return valueTypeFromNumberString<QPointF, 2, u','>(s, ok);
93}
94
95//expects input of "widthxheight"
96QSizeF QQmlStringConverters::sizeFFromString(const QString &s, bool *ok)
97{
98 return valueTypeFromNumberString<QSizeF, 2, u'x'>(s, ok);
99}
100
101//expects input of "x,y,widthxheight" //### use space instead of second comma?
102QRectF QQmlStringConverters::rectFFromString(const QString &s, bool *ok)
103{
104 return valueTypeFromNumberString<QRectF, 4, u',', u',', u'x'>(s, ok);
105}
106
107QT_END_NAMESPACE
\inmodule QtCore\reentrant
Definition qpoint.h:231
Q_QML_EXPORT unsigned rgbaFromString(const QString &, bool *ok=nullptr)