7#include <QtCore/qcheckedint_impl.h>
8#include <QtCore/qnamespace.h>
9#include <QtCore/qhashfunctions.h>
10#include <QtCore/qmargins.h>
12#include <QtCore/q20type_traits.h>
13#include <QtCore/q23utility.h>
15#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
28 constexpr QSize()
noexcept;
29 constexpr QSize(
int w,
int h)
noexcept;
31 constexpr inline bool isNull()
const noexcept;
32 constexpr inline bool isEmpty()
const noexcept;
33 constexpr inline bool isValid()
const noexcept;
35 constexpr inline int width()
const noexcept;
36 constexpr inline int height()
const noexcept;
37 constexpr inline void setWidth(
int w)
noexcept;
38 constexpr inline void setHeight(
int h)
noexcept;
39 void transpose()
noexcept;
40 [[nodiscard]]
constexpr inline QSize transposed()
const noexcept;
42 inline void scale(
int w,
int h, Qt::AspectRatioMode mode)
noexcept;
43 inline void scale(
const QSize &s, Qt::AspectRatioMode mode)
noexcept;
44 [[nodiscard]] QSize scaled(
int w,
int h, Qt::AspectRatioMode mode)
const noexcept;
45 [[nodiscard]] QSize scaled(
const QSize &s, Qt::AspectRatioMode mode)
const noexcept;
47 [[nodiscard]]
constexpr inline QSize expandedTo(
const QSize &)
const noexcept;
48 [[nodiscard]]
constexpr inline QSize boundedTo(
const QSize &)
const noexcept;
50 [[nodiscard]]
constexpr QSize grownBy(QMargins m)
const noexcept
51 {
return {wd + m.left() + m.right(), ht + m.top() + m.bottom()}; }
52 [[nodiscard]]
constexpr QSize shrunkBy(QMargins m)
const noexcept
53 {
return {wd - m.left() - m.right(), ht - m.top() - m.bottom()}; }
55 constexpr inline int &rwidth()
noexcept;
56 constexpr inline int &rheight()
noexcept;
58 constexpr inline QSize &operator+=(
const QSize &)
noexcept;
59 constexpr inline QSize &operator-=(
const QSize &)
noexcept;
60 constexpr inline QSize &operator*=(qreal c)
noexcept;
61 inline QSize &operator/=(qreal c);
64 friend constexpr bool comparesEqual(
const QSize &s1,
const QSize &s2)
noexcept
65 {
return s1.wd == s2.wd && s1.ht == s2.ht; }
66 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSize)
67 friend inline constexpr QSize operator+(
const QSize &s1,
const QSize &s2)
noexcept
68 {
return QSize(s1.wd + s2.wd, s1.ht + s2.ht); }
69 friend inline constexpr QSize operator-(
const QSize &s1,
const QSize &s2)
noexcept
70 {
return QSize(s1.wd - s2.wd, s1.ht - s2.ht); }
71 friend inline constexpr QSize operator*(
const QSize &s, qreal c)
noexcept
72 {
return QSize(QtPrivate::qSaturateRound(s.width() * c), QtPrivate::qSaturateRound(s.height() * c)); }
73 friend inline constexpr QSize operator*(qreal c,
const QSize &s)
noexcept
75 friend inline QSize operator/(
const QSize &s, qreal c)
77 Q_ASSERT(!qFuzzyIsNull(c));
78 return QSize(QtPrivate::qSaturateRound(s.width() / c), QtPrivate::qSaturateRound(s.height() / c));
80 friend inline constexpr size_t qHash(
const QSize &, size_t)
noexcept;
83#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
84 [[nodiscard]] CGSize toCGSize()
const noexcept;
87 [[nodiscard]]
inline constexpr QSizeF toSizeF()
const noexcept;
90 using Representation = QtPrivate::QCheckedIntegers::QCheckedInt<
int>;
92 constexpr QSize(Representation w, Representation h)
noexcept
99 template <std::size_t I,
101 std::enable_if_t<(I < 2),
bool> =
true,
102 std::enable_if_t<std::is_same_v<q20::remove_cvref_t<S>, QSize>,
bool> =
true>
103 friend constexpr decltype(
auto) get(S &&s)
noexcept
105 if constexpr (I == 0)
106 return q23::forward_like<S>(s.wd).as_underlying();
107 else if constexpr (I == 1)
108 return q23::forward_like<S>(s.ht).as_underlying();
114
115
117#ifndef QT_NO_DATASTREAM
118Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QSize &);
124
125
127constexpr inline QSize::QSize()
noexcept : wd(-1), ht(-1) {}
129constexpr inline QSize::QSize(
int w,
int h)
noexcept : wd(w), ht(h) {}
131constexpr inline bool QSize::isNull()
const noexcept
132{
return wd == 0 && ht == 0; }
134constexpr inline bool QSize::isEmpty()
const noexcept
135{
return wd < 1 || ht < 1; }
137constexpr inline bool QSize::isValid()
const noexcept
138{
return wd >= 0 && ht >= 0; }
140constexpr inline int QSize::width()
const noexcept
141{
return wd.value(); }
143constexpr inline int QSize::height()
const noexcept
144{
return ht.value(); }
146constexpr inline void QSize::setWidth(
int w)
noexcept
149constexpr inline void QSize::setHeight(
int h)
noexcept
152constexpr inline QSize QSize::transposed()
const noexcept
153{
return QSize(ht, wd); }
155inline void QSize::scale(
int w,
int h, Qt::AspectRatioMode mode)
noexcept
156{ scale(QSize(w, h), mode); }
158inline void QSize::scale(
const QSize &s, Qt::AspectRatioMode mode)
noexcept
159{ *
this = scaled(s, mode); }
161inline QSize QSize::scaled(
int w,
int h, Qt::AspectRatioMode mode)
const noexcept
162{
return scaled(QSize(w, h), mode); }
164constexpr inline int &QSize::rwidth()
noexcept
165{
return wd.as_underlying(); }
167constexpr inline int &QSize::rheight()
noexcept
168{
return ht.as_underlying(); }
170constexpr inline QSize &QSize::operator+=(
const QSize &s)
noexcept
177constexpr inline QSize &QSize::operator-=(
const QSize &s)
noexcept
184constexpr inline QSize &QSize::operator*=(qreal c)
noexcept
186 wd.setValue(QtPrivate::qSaturateRound(width() * c));
187 ht.setValue(QtPrivate::qSaturateRound(height() * c));
191constexpr inline size_t qHash(
const QSize &s, size_t seed = 0)
noexcept
192{
return qHashMulti(seed, s.width(), s.height()); }
194inline QSize &QSize::operator/=(qreal c)
196 Q_ASSERT(!qFuzzyIsNull(c));
197 wd.setValue(QtPrivate::qSaturateRound(width() / c));
198 ht.setValue(QtPrivate::qSaturateRound(height() / c));
202constexpr inline QSize QSize::expandedTo(
const QSize & otherSize)
const noexcept
204 return QSize(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
207constexpr inline QSize QSize::boundedTo(
const QSize & otherSize)
const noexcept
209 return QSize(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
212#ifndef QT_NO_DEBUG_STREAM
213Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QSize &);
220 constexpr QSizeF()
noexcept;
221 constexpr QSizeF(
const QSize &sz)
noexcept;
222 constexpr QSizeF(qreal w, qreal h)
noexcept;
224 inline bool isNull()
const noexcept;
225 constexpr inline bool isEmpty()
const noexcept;
226 constexpr inline bool isValid()
const noexcept;
228 constexpr inline qreal width()
const noexcept;
229 constexpr inline qreal height()
const noexcept;
230 constexpr inline void setWidth(qreal w)
noexcept;
231 constexpr inline void setHeight(qreal h)
noexcept;
232 void transpose()
noexcept;
233 [[nodiscard]]
constexpr inline QSizeF transposed()
const noexcept;
235 inline void scale(qreal w, qreal h, Qt::AspectRatioMode mode)
noexcept;
236 inline void scale(
const QSizeF &s, Qt::AspectRatioMode mode)
noexcept;
237 [[nodiscard]] QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode)
const noexcept;
238 [[nodiscard]] QSizeF scaled(
const QSizeF &s, Qt::AspectRatioMode mode)
const noexcept;
240 [[nodiscard]]
constexpr inline QSizeF expandedTo(
const QSizeF &)
const noexcept;
241 [[nodiscard]]
constexpr inline QSizeF boundedTo(
const QSizeF &)
const noexcept;
243 [[nodiscard]]
constexpr QSizeF grownBy(QMarginsF m)
const noexcept
244 {
return {width() + m.left() + m.right(), height() + m.top() + m.bottom()}; }
245 [[nodiscard]]
constexpr QSizeF shrunkBy(QMarginsF m)
const noexcept
246 {
return {width() - m.left() - m.right(), height() - m.top() - m.bottom()}; }
248 constexpr inline qreal &rwidth()
noexcept;
249 constexpr inline qreal &rheight()
noexcept;
251 constexpr inline QSizeF &operator+=(
const QSizeF &)
noexcept;
252 constexpr inline QSizeF &operator-=(
const QSizeF &)
noexcept;
253 constexpr inline QSizeF &operator*=(qreal c)
noexcept;
254 inline QSizeF &operator/=(qreal c);
258 QT_WARNING_DISABLE_FLOAT_COMPARE
259 friend constexpr bool qFuzzyCompare(
const QSizeF &s1,
const QSizeF &s2)
noexcept
263 return ((!s1.wd || !s2.wd) ? qFuzzyIsNull(s1.wd - s2.wd) : qFuzzyCompare(s1.wd, s2.wd))
264 && ((!s1.ht || !s2.ht) ? qFuzzyIsNull(s1.ht - s2.ht) : qFuzzyCompare(s1.ht, s2.ht));
267 friend constexpr bool qFuzzyIsNull(
const QSizeF &size)
noexcept
268 {
return qFuzzyIsNull(size.wd) && qFuzzyIsNull(size.ht); }
269 friend constexpr bool comparesEqual(
const QSizeF &lhs,
const QSizeF &rhs)
noexcept
270 {
return qFuzzyCompare(lhs, rhs); }
271 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSizeF)
272 friend constexpr bool comparesEqual(
const QSizeF &lhs,
const QSize &rhs)
noexcept
273 {
return comparesEqual(lhs, rhs.toSizeF()); }
274 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QSizeF, QSize)
275 friend constexpr inline QSizeF operator+(
const QSizeF &s1,
const QSizeF &s2)
noexcept
276 {
return QSizeF(s1.wd + s2.wd, s1.ht + s2.ht); }
277 friend constexpr inline QSizeF operator-(
const QSizeF &s1,
const QSizeF &s2)
noexcept
278 {
return QSizeF(s1.wd - s2.wd, s1.ht - s2.ht); }
279 friend constexpr inline QSizeF operator*(
const QSizeF &s, qreal c)
noexcept
280 {
return QSizeF(s.wd * c, s.ht * c); }
281 friend constexpr inline QSizeF operator*(qreal c,
const QSizeF &s)
noexcept
283 friend inline QSizeF operator/(
const QSizeF &s, qreal c)
284 { Q_ASSERT(!qFuzzyIsNull(c));
return QSizeF(s.wd / c, s.ht / c); }
287 constexpr inline QSize toSize()
const noexcept;
289#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
290 [[nodiscard]]
static QSizeF fromCGSize(CGSize size)
noexcept;
291 [[nodiscard]] CGSize toCGSize()
const noexcept;
298 template <std::size_t I,
300 std::enable_if_t<(I < 2),
bool> =
true,
301 std::enable_if_t<std::is_same_v<q20::remove_cvref_t<S>, QSizeF>,
bool> =
true>
302 friend constexpr decltype(
auto) get(S &&s)
noexcept
304 if constexpr (I == 0)
305 return q23::forward_like<S>(s.wd);
306 else if constexpr (I == 1)
307 return q23::forward_like<S>(s.ht);
314
315
317#ifndef QT_NO_DATASTREAM
318Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QSizeF &);
324
325
327constexpr inline QSizeF::QSizeF()
noexcept : wd(-1.), ht(-1.) {}
329constexpr inline QSizeF::QSizeF(
const QSize &sz)
noexcept : wd(sz.width()), ht(sz.height()) {}
331constexpr inline QSizeF::QSizeF(qreal w, qreal h)
noexcept : wd(w), ht(h) {}
333inline bool QSizeF::isNull()
const noexcept
334{
return qIsNull(wd) && qIsNull(ht); }
336constexpr inline bool QSizeF::isEmpty()
const noexcept
337{
return wd <= 0. || ht <= 0.; }
339constexpr inline bool QSizeF::isValid()
const noexcept
340{
return wd >= 0. && ht >= 0.; }
342constexpr inline qreal QSizeF::width()
const noexcept
345constexpr inline qreal QSizeF::height()
const noexcept
348constexpr inline void QSizeF::setWidth(qreal w)
noexcept
351constexpr inline void QSizeF::setHeight(qreal h)
noexcept
354constexpr inline QSizeF QSizeF::transposed()
const noexcept
355{
return QSizeF(ht, wd); }
357inline void QSizeF::scale(qreal w, qreal h, Qt::AspectRatioMode mode)
noexcept
358{ scale(QSizeF(w, h), mode); }
360inline void QSizeF::scale(
const QSizeF &s, Qt::AspectRatioMode mode)
noexcept
361{ *
this = scaled(s, mode); }
363inline QSizeF QSizeF::scaled(qreal w, qreal h, Qt::AspectRatioMode mode)
const noexcept
364{
return scaled(QSizeF(w, h), mode); }
366constexpr inline qreal &QSizeF::rwidth()
noexcept
369constexpr inline qreal &QSizeF::rheight()
noexcept
372constexpr inline QSizeF &QSizeF::operator+=(
const QSizeF &s)
noexcept
379constexpr inline QSizeF &QSizeF::operator-=(
const QSizeF &s)
noexcept
386constexpr inline QSizeF &QSizeF::operator*=(qreal c)
noexcept
393inline QSizeF &QSizeF::operator/=(qreal c)
395 Q_ASSERT(!qFuzzyIsNull(c) && qIsFinite(c));
401constexpr inline QSizeF QSizeF::expandedTo(
const QSizeF &otherSize)
const noexcept
403 return QSizeF(qMax(wd, otherSize.wd), qMax(ht, otherSize.ht));
406constexpr inline QSizeF QSizeF::boundedTo(
const QSizeF &otherSize)
const noexcept
408 return QSizeF(qMin(wd, otherSize.wd), qMin(ht, otherSize.ht));
411constexpr inline QSize QSizeF::toSize()
const noexcept
413 return QSize(QtPrivate::qSaturateRound(wd), QtPrivate::qSaturateRound(ht));
416constexpr QSizeF QSize::toSizeF()
const noexcept {
return *
this; }
418#ifndef QT_NO_DEBUG_STREAM
419Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QSizeF &);
425
426
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
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)
\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
QSettings settings("MySoft", "Star Runner")
[0]