8#include <QtCore/qcheckedint_impl.h>
9#include <QtCore/qnamespace.h>
10#include <QtCore/qhashfunctions.h>
11#include <QtCore/qmargins.h>
13#include <QtCore/q20type_traits.h>
14#include <QtCore/q23utility.h>
16#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
29 constexpr QSize()
noexcept;
30 constexpr QSize(
int w,
int h)
noexcept;
32 constexpr inline bool isNull()
const noexcept;
33 constexpr inline bool isEmpty()
const noexcept;
34 constexpr inline bool isValid()
const noexcept;
36 constexpr inline int width()
const noexcept;
37 constexpr inline int height()
const noexcept;
38 constexpr inline void setWidth(
int w)
noexcept;
39 constexpr inline void setHeight(
int h)
noexcept;
40 void transpose()
noexcept;
41 [[nodiscard]]
constexpr inline QSize transposed()
const noexcept;
43 inline void scale(
int w,
int h, Qt::AspectRatioMode mode)
noexcept;
44 inline void scale(
const QSize &s, Qt::AspectRatioMode mode)
noexcept;
45 [[nodiscard]] QSize scaled(
int w,
int h, Qt::AspectRatioMode mode)
const noexcept;
46 [[nodiscard]] QSize scaled(
const QSize &s, Qt::AspectRatioMode mode)
const noexcept;
48 [[nodiscard]]
constexpr inline QSize expandedTo(
const QSize &)
const noexcept;
49 [[nodiscard]]
constexpr inline QSize boundedTo(
const QSize &)
const noexcept;
51 [[nodiscard]]
constexpr QSize grownBy(QMargins m)
const noexcept
52 {
return {wd + m.left() + m.right(), ht + m.top() + m.bottom()}; }
53 [[nodiscard]]
constexpr QSize shrunkBy(QMargins m)
const noexcept
54 {
return {wd - m.left() - m.right(), ht - m.top() - m.bottom()}; }
56 constexpr inline int &rwidth()
noexcept;
57 constexpr inline int &rheight()
noexcept;
59 constexpr inline QSize &operator+=(
const QSize &)
noexcept;
60 constexpr inline QSize &operator-=(
const QSize &)
noexcept;
61 constexpr inline QSize &operator*=(qreal c)
noexcept;
62 inline QSize &operator/=(qreal c);
65 friend constexpr bool comparesEqual(
const QSize &s1,
const QSize &s2)
noexcept
66 {
return s1.wd == s2.wd && s1.ht == s2.ht; }
67 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSize)
68 friend inline constexpr QSize operator+(
const QSize &s1,
const QSize &s2)
noexcept
69 {
return QSize(s1.wd + s2.wd, s1.ht + s2.ht); }
70 friend inline constexpr QSize operator-(
const QSize &s1,
const QSize &s2)
noexcept
71 {
return QSize(s1.wd - s2.wd, s1.ht - s2.ht); }
72 friend inline constexpr QSize operator*(
const QSize &s, qreal c)
noexcept
73 {
return QSize(QtPrivate::qSaturateRound(s.width() * c), QtPrivate::qSaturateRound(s.height() * c)); }
74 friend inline constexpr QSize operator*(qreal c,
const QSize &s)
noexcept
76 friend inline QSize operator/(
const QSize &s, qreal c)
78 Q_ASSERT(!qFuzzyIsNull(c));
79 return QSize(QtPrivate::qSaturateRound(s.width() / c), QtPrivate::qSaturateRound(s.height() / c));
81 friend inline constexpr size_t qHash(
const QSize &, size_t)
noexcept;
84#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
85 [[nodiscard]] CGSize toCGSize()
const noexcept;
88 [[nodiscard]]
inline constexpr QSizeF toSizeF()
const noexcept;
91 using Representation = QtPrivate::QCheckedIntegers::QCheckedInt<
int>;
93 constexpr QSize(Representation w, Representation h)
noexcept
100 template <std::size_t I,
102 std::enable_if_t<(I < 2),
bool> =
true,
103 std::enable_if_t<std::is_same_v<q20::remove_cvref_t<S>, QSize>,
bool> =
true>
104 friend constexpr decltype(
auto) get(S &&s)
noexcept
106 if constexpr (I == 0)
107 return q23::forward_like<S>(s.wd).as_underlying();
108 else if constexpr (I == 1)
109 return q23::forward_like<S>(s.ht).as_underlying();
115
116
118#ifndef QT_NO_DATASTREAM
119Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QSize &);
125
126
128constexpr inline QSize::QSize()
noexcept : wd(-1), ht(-1) {}
130constexpr inline QSize::QSize(
int w,
int h)
noexcept : wd(w), ht(h) {}
132constexpr inline bool QSize::isNull()
const noexcept
133{
return wd == 0 && ht == 0; }
135constexpr inline bool QSize::isEmpty()
const noexcept
136{
return wd < 1 || ht < 1; }
138constexpr inline bool QSize::isValid()
const noexcept
139{
return wd >= 0 && ht >= 0; }
141constexpr inline int QSize::width()
const noexcept
142{
return wd.value(); }
144constexpr inline int QSize::height()
const noexcept
145{
return ht.value(); }
147constexpr inline void QSize::setWidth(
int w)
noexcept
150constexpr inline void QSize::setHeight(
int h)
noexcept
153constexpr inline QSize QSize::transposed()
const noexcept
154{
return QSize(ht, wd); }
156inline void QSize::scale(
int w,
int h, Qt::AspectRatioMode mode)
noexcept
157{ scale(QSize(w, h), mode); }
159inline void QSize::scale(
const QSize &s, Qt::AspectRatioMode mode)
noexcept
160{ *
this = scaled(s, mode); }
162inline QSize QSize::scaled(
int w,
int h, Qt::AspectRatioMode mode)
const noexcept
163{
return scaled(QSize(w, h), mode); }
165constexpr inline int &QSize::rwidth()
noexcept
166{
return wd.as_underlying(); }
168constexpr inline int &QSize::rheight()
noexcept
169{
return ht.as_underlying(); }
171constexpr inline QSize &QSize::operator+=(
const QSize &s)
noexcept
178constexpr inline QSize &QSize::operator-=(
const QSize &s)
noexcept
185constexpr inline QSize &QSize::operator*=(qreal c)
noexcept
187 wd.setValue(QtPrivate::qSaturateRound(width() * c));
188 ht.setValue(QtPrivate::qSaturateRound(height() * c));
192constexpr inline size_t qHash(
const QSize &s, size_t seed = 0)
noexcept
193{
return qHashMulti(seed, s.width(), s.height()); }
195inline QSize &QSize::operator/=(qreal c)
197 Q_ASSERT(!qFuzzyIsNull(c));
198 wd.setValue(QtPrivate::qSaturateRound(width() / c));
199 ht.setValue(QtPrivate::qSaturateRound(height() / c));
203constexpr inline QSize QSize::expandedTo(
const QSize & otherSize)
const noexcept
205 return QSize(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
208constexpr inline QSize QSize::boundedTo(
const QSize & otherSize)
const noexcept
210 return QSize(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
213#ifndef QT_NO_DEBUG_STREAM
214Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QSize &);
221 constexpr QSizeF()
noexcept;
222 constexpr QSizeF(
const QSize &sz)
noexcept;
223 constexpr QSizeF(qreal w, qreal h)
noexcept;
225 inline bool isNull()
const noexcept;
226 constexpr inline bool isEmpty()
const noexcept;
227 constexpr inline bool isValid()
const noexcept;
229 constexpr inline qreal width()
const noexcept;
230 constexpr inline qreal height()
const noexcept;
231 constexpr inline void setWidth(qreal w)
noexcept;
232 constexpr inline void setHeight(qreal h)
noexcept;
233 void transpose()
noexcept;
234 [[nodiscard]]
constexpr inline QSizeF transposed()
const noexcept;
236 inline void scale(qreal w, qreal h, Qt::AspectRatioMode mode)
noexcept;
237 inline void scale(
const QSizeF &s, Qt::AspectRatioMode mode)
noexcept;
238 [[nodiscard]] QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode)
const noexcept;
239 [[nodiscard]] QSizeF scaled(
const QSizeF &s, Qt::AspectRatioMode mode)
const noexcept;
241 [[nodiscard]]
constexpr inline QSizeF expandedTo(
const QSizeF &)
const noexcept;
242 [[nodiscard]]
constexpr inline QSizeF boundedTo(
const QSizeF &)
const noexcept;
244 [[nodiscard]]
constexpr QSizeF grownBy(QMarginsF m)
const noexcept
245 {
return {width() + m.left() + m.right(), height() + m.top() + m.bottom()}; }
246 [[nodiscard]]
constexpr QSizeF shrunkBy(QMarginsF m)
const noexcept
247 {
return {width() - m.left() - m.right(), height() - m.top() - m.bottom()}; }
249 constexpr inline qreal &rwidth()
noexcept;
250 constexpr inline qreal &rheight()
noexcept;
252 constexpr inline QSizeF &operator+=(
const QSizeF &)
noexcept;
253 constexpr inline QSizeF &operator-=(
const QSizeF &)
noexcept;
254 constexpr inline QSizeF &operator*=(qreal c)
noexcept;
255 inline QSizeF &operator/=(qreal c);
258 friend constexpr bool qFuzzyCompare(
const QSizeF &s1,
const QSizeF &s2)
noexcept
260 return QtPrivate::fuzzyCompare(s1.wd, s2.wd)
261 && QtPrivate::fuzzyCompare(s1.ht, s2.ht);
263 friend constexpr bool qFuzzyIsNull(
const QSizeF &size)
noexcept
264 {
return qFuzzyIsNull(size.wd) && qFuzzyIsNull(size.ht); }
265 friend constexpr bool comparesEqual(
const QSizeF &lhs,
const QSizeF &rhs)
noexcept
266 {
return qFuzzyCompare(lhs, rhs); }
267 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSizeF)
268 friend constexpr bool comparesEqual(
const QSizeF &lhs,
const QSize &rhs)
noexcept
269 {
return comparesEqual(lhs, rhs.toSizeF()); }
270 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSizeF, QSize)
271 friend constexpr inline QSizeF operator+(
const QSizeF &s1,
const QSizeF &s2)
noexcept
272 {
return QSizeF(s1.wd + s2.wd, s1.ht + s2.ht); }
273 friend constexpr inline QSizeF operator-(
const QSizeF &s1,
const QSizeF &s2)
noexcept
274 {
return QSizeF(s1.wd - s2.wd, s1.ht - s2.ht); }
275 friend constexpr inline QSizeF operator*(
const QSizeF &s, qreal c)
noexcept
276 {
return QSizeF(s.wd * c, s.ht * c); }
277 friend constexpr inline QSizeF operator*(qreal c,
const QSizeF &s)
noexcept
279 friend inline QSizeF operator/(
const QSizeF &s, qreal c)
280 { Q_ASSERT(!qFuzzyIsNull(c));
return QSizeF(s.wd / c, s.ht / c); }
283 constexpr inline QSize toSize()
const noexcept;
285#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
286 [[nodiscard]]
static QSizeF fromCGSize(CGSize size)
noexcept;
287 [[nodiscard]] CGSize toCGSize()
const noexcept;
294 template <std::size_t I,
296 std::enable_if_t<(I < 2),
bool> =
true,
297 std::enable_if_t<std::is_same_v<q20::remove_cvref_t<S>, QSizeF>,
bool> =
true>
298 friend constexpr decltype(
auto) get(S &&s)
noexcept
300 if constexpr (I == 0)
301 return q23::forward_like<S>(s.wd);
302 else if constexpr (I == 1)
303 return q23::forward_like<S>(s.ht);
310
311
313#ifndef QT_NO_DATASTREAM
314Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QSizeF &);
320
321
323constexpr inline QSizeF::QSizeF()
noexcept : wd(-1.), ht(-1.) {}
325constexpr inline QSizeF::QSizeF(
const QSize &sz)
noexcept : wd(sz.width()), ht(sz.height()) {}
327constexpr inline QSizeF::QSizeF(qreal w, qreal h)
noexcept : wd(w), ht(h) {}
329inline bool QSizeF::isNull()
const noexcept
330{
return qIsNull(wd) && qIsNull(ht); }
332constexpr inline bool QSizeF::isEmpty()
const noexcept
333{
return wd <= 0. || ht <= 0.; }
335constexpr inline bool QSizeF::isValid()
const noexcept
336{
return wd >= 0. && ht >= 0.; }
338constexpr inline qreal QSizeF::width()
const noexcept
341constexpr inline qreal QSizeF::height()
const noexcept
344constexpr inline void QSizeF::setWidth(qreal w)
noexcept
347constexpr inline void QSizeF::setHeight(qreal h)
noexcept
350constexpr inline QSizeF QSizeF::transposed()
const noexcept
351{
return QSizeF(ht, wd); }
353inline void QSizeF::scale(qreal w, qreal h, Qt::AspectRatioMode mode)
noexcept
354{ scale(QSizeF(w, h), mode); }
356inline void QSizeF::scale(
const QSizeF &s, Qt::AspectRatioMode mode)
noexcept
357{ *
this = scaled(s, mode); }
359inline QSizeF QSizeF::scaled(qreal w, qreal h, Qt::AspectRatioMode mode)
const noexcept
360{
return scaled(QSizeF(w, h), mode); }
362constexpr inline qreal &QSizeF::rwidth()
noexcept
365constexpr inline qreal &QSizeF::rheight()
noexcept
368constexpr inline QSizeF &QSizeF::operator+=(
const QSizeF &s)
noexcept
375constexpr inline QSizeF &QSizeF::operator-=(
const QSizeF &s)
noexcept
382constexpr inline QSizeF &QSizeF::operator*=(qreal c)
noexcept
389inline QSizeF &QSizeF::operator/=(qreal c)
391 Q_ASSERT(!qFuzzyIsNull(c) && qIsFinite(c));
397constexpr inline QSizeF QSizeF::expandedTo(
const QSizeF &otherSize)
const noexcept
399 return QSizeF(qMax(wd, otherSize.wd), qMax(ht, otherSize.ht));
402constexpr inline QSizeF QSizeF::boundedTo(
const QSizeF &otherSize)
const noexcept
404 return QSizeF(qMin(wd, otherSize.wd), qMin(ht, otherSize.ht));
407constexpr inline QSize QSizeF::toSize()
const noexcept
409 return QSize(QtPrivate::qSaturateRound(wd), QtPrivate::qSaturateRound(ht));
412constexpr QSizeF QSize::toSizeF()
const noexcept {
return *
this; }
414#ifndef QT_NO_DEBUG_STREAM
415Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QSizeF &);
421
422
static bool readIniSection(const QSettingsKey §ion, QByteArrayView data, ParsedSettingsMap *settingsMap)
void set(const QString &key, const QVariant &value) override
QStringList children(const QString &prefix, ChildSpec spec) const override
~QConfFileSettingsPrivate()
virtual void initAccess()
bool readIniFile(QByteArrayView data, UnparsedSettingsMap *unparsedIniSections)
bool isWritable() const override
QString fileName() const override
QConfFileSettingsPrivate(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application)
void remove(const QString &key) override
QConfFileSettingsPrivate(const QString &fileName, QSettings::Format format)
const QList< QConfFile * > & getConfFiles() const
static bool readIniLine(QByteArrayView data, qsizetype &dataPos, qsizetype &lineStart, qsizetype &lineLen, qsizetype &equalsPos)
std::optional< QVariant > get(const QString &key) const override
UnparsedSettingsMap unparsedIniSections
ParsedSettingsMap originalKeys
static Q_AUTOTEST_EXPORT void clearCache()
ParsedSettingsMap removedKeys
ParsedSettingsMap mergedKeyMap() const
static QConfFile * fromName(const QString &name, bool _userPerms)
ParsedSettingsMap addedKeys
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr qreal & ry() noexcept
Returns a reference to the y coordinate of this point.
constexpr qreal x() const noexcept
Returns the x coordinate of this point.
constexpr qreal manhattanLength() const
friend constexpr bool comparesEqual(const QPointF &p1, const QPointF &p2) noexcept
friend constexpr bool qFuzzyIsNull(const QPointF &point) noexcept
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
constexpr QPointF & operator+=(const QPointF &p)
Adds the given point to this point and returns a reference to this point.
constexpr qreal & rx() noexcept
Returns a reference to the x coordinate of this point.
constexpr QPointF & operator*=(qreal c)
Multiplies this point's coordinates by the given finite factor, and returns a reference to this point...
constexpr QPointF transposed() const noexcept
constexpr void setY(qreal y) noexcept
Sets the y coordinate of this point to the given finite y coordinate.
constexpr QPointF & operator-=(const QPointF &p)
Subtracts the given point from this point and returns a reference to this point.
constexpr QPointF() noexcept
Constructs a null point, i.e.
constexpr QPointF(qreal xpos, qreal ypos) noexcept
Constructs a point with the given coordinates (xpos, ypos).
constexpr void setX(qreal x) noexcept
Sets the x coordinate of this point to the given finite x coordinate.
constexpr QPointF & operator/=(qreal c)
Divides both x and y by the given divisor, and returns a reference to this point.
constexpr QPointF(const QPoint &p) noexcept
Constructs a copy of the given point.
bool isNull() const noexcept
Returns true if both the x and y coordinates are set to 0.0 (ignoring the sign); otherwise returns fa...
static constexpr qreal dotProduct(const QPointF &p1, const QPointF &p2)
friend constexpr bool qFuzzyCompare(const QPointF &p1, const QPointF &p2) noexcept
\inmodule QtCore\reentrant
constexpr bool isNull() const noexcept
Returns true if both the x and y coordinates are set to 0, otherwise returns false.
constexpr QPoint & operator*=(double factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr int & ry() noexcept
Returns a reference to the y coordinate of this point.
constexpr int & rx() noexcept
Returns a reference to the x coordinate of this point.
constexpr QPoint transposed() const noexcept
constexpr int x() const noexcept
Returns the x coordinate of this point.
constexpr void setY(int y) noexcept
Sets the y coordinate of this point to the given y coordinate.
constexpr QPoint & operator*=(int factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr QPoint & operator+=(const QPoint &p)
Adds the given point to this point and returns a reference to this point.
constexpr int manhattanLength() const
Returns the sum of the absolute values of x() and y(), traditionally known as the "Manhattan length" ...
constexpr QPoint(int xpos, int ypos) noexcept
Constructs a point with the given coordinates (xpos, ypos).
constexpr int y() const noexcept
Returns the y coordinate of this point.
static constexpr int dotProduct(const QPoint &p1, const QPoint &p2)
constexpr void setX(int x) noexcept
Sets the x coordinate of this point to the given x coordinate.
constexpr QPoint & operator*=(float factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr QPoint & operator-=(const QPoint &p)
Subtracts the given point from this point and returns a reference to this point.
constexpr QPoint & operator/=(qreal divisor)
This is an overloaded member function, provided for convenience. It differs from the above function o...
constexpr QPoint() noexcept
Constructs a null point, i.e.
friend constexpr bool comparesEqual(const QPoint &p1, const QPoint &p2) noexcept
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QSettingsGroup(const QString &s, bool guessArraySize)
qsizetype arraySizeGuess() const
QSettingsGroup(const QString &s)
void setArrayIndex(qsizetype i)
QSettingsIniKey(const QString &str, qsizetype pos=-1)
QSettingsKey(const QString &key, Qt::CaseSensitivity cs, qsizetype=-1)
QString originalCaseKey() const
qsizetype originalKeyPosition() const
Combined button and popup list for selecting options.
QDataStream & readListBasedContainer(QDataStream &s, Container &c)
QDataStream & readAssociativeContainer(QDataStream &s, Container &c)
QDataStream & writeAssociativeContainer(QDataStream &s, const Container &c)
QDataStream & writeAssociativeMultiContainer(QDataStream &s, const Container &c)
QDataStream & writeSequentialContainer(QDataStream &s, const Container &c)
QDataStream & readArrayBasedContainer(QDataStream &s, Container &c)
static const char charTraits[256]
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
std::enable_if_t< std::is_enum< T >::value, QDataStream & > operator>>(QDataStream &s, T &t)
QDataStream & operator>>(QDataStream &s, QFlags< Enum > &e)
QDataStreamIfHasIStreamOperators< T1, T2 > operator>>(QDataStream &s, std::pair< T1, T2 > &p)
QDataStream & operator>>(QDataStream &s, QKeyCombination &combination)
QDataStreamIfHasIStreamOperatorsContainer< QHash< Key, T >, Key, T > operator>>(QDataStream &s, QHash< Key, T > &hash)
QDataStreamIfHasIStreamOperatorsContainer< QList< T >, T > operator>>(QDataStream &s, QList< T > &v)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
size_t qHash(QPointF, size_t seed=0)=delete
Q_DECLARE_TYPEINFO(QPointF, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QPoint, Q_PRIMITIVE_TYPE)
constexpr QRectF operator+(const QRectF &lhs, const QMarginsF &rhs) noexcept
constexpr QRect operator+(const QMargins &margins, const QRect &rectangle) noexcept
Q_DECLARE_TYPEINFO(QRect, Q_RELOCATABLE_TYPE)
constexpr QRectF operator+(const QMarginsF &lhs, const QRectF &rhs) noexcept
Q_DECLARE_TYPEINFO(QRectF, Q_RELOCATABLE_TYPE)
constexpr QRectF operator-(const QRectF &lhs, const QMarginsF &rhs) noexcept
constexpr QRect operator+(const QRect &rectangle, const QMargins &margins) noexcept
constexpr size_t qHash(const QRect &r, size_t seed=0) noexcept
constexpr QRect operator-(const QRect &lhs, const QMargins &rhs) noexcept
QMap< QString, QSettingsIniSection > IniMap
QList< QConfFileCustomFormat > CustomFormatVector
static bool operator<(const QSettingsIniKey &k1, const QSettingsIniKey &k2)
static constexpr QChar sep
static Path getPath(QSettings::Format format, QSettings::Scope scope)
QMap< QSettingsIniKey, QVariant > IniKeyMap
static int pathHashKey(QSettings::Format format, QSettings::Scope scope)
static QString make_user_path()
static std::unique_lock< QBasicMutex > initDefaultPaths(std::unique_lock< QBasicMutex > locker)
static QString make_user_path_without_qstandard_paths()
QHash< QString, QConfFile * > ConfFileHash
QHash< int, Path > PathHash
Q_DECLARE_TYPEINFO(QSettingsIniSection, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(QConfFileCustomFormat, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(QSettingsIniKey, Q_RELOCATABLE_TYPE)
QCache< QString, QConfFile > ConfFileCache
#define FLUSH_CURRENT_SECTION()
static void iniChopTrailingSpaces(QString &str, qsizetype limit)
Q_DECLARE_TYPEINFO(QSettingsGroup, Q_RELOCATABLE_TYPE)
static const Qt::CaseSensitivity IniCaseSensitivity
Q_DECLARE_TYPEINFO(QSettingsKey, Q_RELOCATABLE_TYPE)
QMap< QSettingsKey, QByteArray > UnparsedSettingsMap
QMap< QSettingsKey, QVariant > ParsedSettingsMap
#define QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
Q_DECLARE_TYPEINFO(QSizeF, Q_RELOCATABLE_TYPE)
constexpr size_t qHash(const QSize &s, size_t seed=0) noexcept