20#if QT_CONFIG(easingcurve)
27#if QT_CONFIG(regularexpression)
31#ifndef QT_BOOTSTRAPPED
48#if QT_CONFIG(itemmodel)
52#ifndef QT_NO_GEOM_VARIANT
65#define NS(x) QT_PREPEND_NAMESPACE(x)
72struct QMetaTypeDeleter
75 void operator()(
void *
data)
77 if (iface->alignment > __STDCPP_DEFAULT_NEW_ALIGNMENT__) {
78 operator delete(
data, std::align_val_t(iface->alignment));
80 operator delete(
data);
85struct QMetaTypeCustomRegistry
88#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
89 QMetaTypeCustomRegistry()
97 aliases.insert(
"qfloat16", QtPrivate::qMetaTypeInterfaceForType<qfloat16>());
114 if (
int id = ti->typeId.loadRelaxed())
122 const auto id = ti2->typeId.loadRelaxed();
123 ti->typeId.storeRelaxed(
id);
128 while (firstEmpty <
size && registry[firstEmpty])
130 if (firstEmpty <
size) {
131 registry[firstEmpty] = ti;
135 firstEmpty = registry.
size();
139 if (ti->legacyRegisterOp)
140 ti->legacyRegisterOp();
141 return ti->typeId.loadRelaxed();
144 void unregisterDynamicType(
int id)
151 auto &ti = registry[idx];
155 while (
it != aliases.
end()) {
156 if (
it.value() == ti)
164 firstEmpty = std::min(firstEmpty, idx);
182 const char *
name =
nullptr;
183 if (!customTypeRegistry.exists())
185 QMetaTypeCustomRegistry *
r = &*customTypeRegistry;
190 auto end =
r->aliases.constEnd();
192 if (
it.value() != type_d)
194 if (
it.key() == officialName)
196 name =
it.key().constData();
204 if (
it.value() == type_d &&
it.key() != officialName)
205 otherNames <<
it.key();
208 if (!otherNames.isEmpty())
209 qWarning(
"QMetaType: type %s has more than one typedef alias: %s, %s",
210 type_d->
name,
name, otherNames.join(
", ").constData());
564 auto reg = customTypeRegistry();
566 return reg->registerCustomType(
iface);
651 std::unique_ptr<void, QMetaTypeDeleter> where(
nullptr, {d_ptr});
652 if (d_ptr->
alignment > __STDCPP_DEFAULT_NEW_ALIGNMENT__)
653 where.reset(
operator new(d_ptr->
size, std::align_val_t(d_ptr->
alignment)));
655 where.reset(
operator new(d_ptr->
size));
658 return where.release();
674 QMetaTypeDeleter{d_ptr}(
data);
734 std::less<const void *> less;
735 if (less(ptr1, ptr2))
737 if (less(ptr2, ptr1))
774 *
reinterpret_cast<const void *
const *
>(rhs));
778 if (d_ptr->
lessThan(d_ptr, lhs, rhs))
780 if (d_ptr->
lessThan(d_ptr, rhs, lhs))
810 return *
reinterpret_cast<const void *
const *
>(lhs) == *
reinterpret_cast<const void *
const *
>(rhs);
813 return d_ptr->
equals(d_ptr, lhs, rhs);
913 if (
auto reg = customTypeRegistry())
914 reg->unregisterDynamicType(
d->typeId.loadRelaxed());
915 d->typeId.storeRelease(0);
942#define QT_ADD_STATIC_METATYPE(MetaTypeName, MetaTypeId, RealName) \
943 { #RealName, sizeof(#RealName) - 1, MetaTypeId },
945#define QT_ADD_STATIC_METATYPE_ALIASES_ITER(MetaTypeName, MetaTypeId, AliasingName, RealNameStr) \
946 { RealNameStr, sizeof(RealNameStr) - 1, QMetaType::MetaTypeName },
959 template<
typename T,
typename LiteralWrapper =
961 static inline bool convertToBool(
const T &
source)
964 return !(
str.
isEmpty() ||
str == LiteralWrapper(
"0") ||
str == LiteralWrapper(
"false"));
979 bool convert(
const void *from,
int fromTypeId,
void *to,
int toTypeId)
const override
984 bool onlyCheck = (from ==
nullptr && to ==
nullptr);
987 Q_ASSERT(onlyCheck || (
bool(from) &&
bool(to)));
990 using SChar =
signed char;
991 using UChar =
unsigned char;
993 using UShort =
unsigned short;
995 using UInt =
unsigned int;
998 using ULong =
unsigned long;
1000 using Float = float;
1003 using Nullptr = std::nullptr_t;
1005#define QMETATYPE_CONVERTER_ASSIGN_DOUBLE(To, From) \
1006 QMETATYPE_CONVERTER(To, From, result = double(source); return true;)
1007#define QMETATYPE_CONVERTER_ASSIGN_NUMBER(To, From) \
1008 QMETATYPE_CONVERTER(To, From, result = To::number(source); return true;)
1009#ifndef QT_BOOTSTRAPPED
1010#define CONVERT_CBOR_AND_JSON(To) \
1011 QMETATYPE_CONVERTER(To, QCborValue, \
1012 if constexpr(std::is_same_v<To, Bool>) { \
1013 if (!source.isBool()) \
1015 result = source.toBool(); \
1017 if (!source.isInteger() && !source.isDouble()) \
1019 if constexpr(std::is_integral_v<To>) \
1020 result = source.toInteger(); \
1022 result = source.toDouble(); \
1026 QMETATYPE_CONVERTER(To, QJsonValue, \
1027 if constexpr(std::is_same_v<To, Bool>) { \
1028 if (!source.isBool()) \
1030 result = source.toBool(); \
1032 if (!source.isDouble()) \
1034 if constexpr(std::is_integral_v<To>) \
1035 result = source.toInteger(); \
1037 result = source.toDouble(); \
1042#define CONVERT_CBOR_AND_JSON(To)
1045#define INTEGRAL_CONVERTER(To) \
1046 QMETATYPE_CONVERTER_ASSIGN(To, Bool); \
1047 QMETATYPE_CONVERTER_ASSIGN(To, Char); \
1048 QMETATYPE_CONVERTER_ASSIGN(To, UChar); \
1049 QMETATYPE_CONVERTER_ASSIGN(To, SChar); \
1050 QMETATYPE_CONVERTER_ASSIGN(To, Short); \
1051 QMETATYPE_CONVERTER_ASSIGN(To, UShort); \
1052 QMETATYPE_CONVERTER_ASSIGN(To, Int); \
1053 QMETATYPE_CONVERTER_ASSIGN(To, UInt); \
1054 QMETATYPE_CONVERTER_ASSIGN(To, Long); \
1055 QMETATYPE_CONVERTER_ASSIGN(To, ULong); \
1056 QMETATYPE_CONVERTER_ASSIGN(To, LongLong); \
1057 QMETATYPE_CONVERTER_ASSIGN(To, ULongLong); \
1058 QMETATYPE_CONVERTER(To, Float, result = qRound64(source); return true;); \
1059 QMETATYPE_CONVERTER(To, Double, result = qRound64(source); return true;); \
1060 QMETATYPE_CONVERTER(To, QChar, result = source.unicode(); return true;); \
1061 QMETATYPE_CONVERTER(To, QString, \
1063 if constexpr(std::is_same_v<To, bool>) \
1064 result = (ok = true, convertToBool(source)); \
1065 else if constexpr(std::is_signed_v<To>) \
1066 result = To(source.toLongLong(&ok)); \
1068 result = To(source.toULongLong(&ok)); \
1071 QMETATYPE_CONVERTER(To, QByteArray, \
1073 if constexpr(std::is_same_v<To, bool>) \
1074 result = (ok = true, convertToBool(source)); \
1075 else if constexpr(std::is_signed_v<To>) \
1076 result = To(source.toLongLong(&ok)); \
1078 result = To(source.toULongLong(&ok)); \
1081 CONVERT_CBOR_AND_JSON(To)
1083#define FLOAT_CONVERTER(To) \
1084 QMETATYPE_CONVERTER_ASSIGN(To, Bool); \
1085 QMETATYPE_CONVERTER_ASSIGN(To, Char); \
1086 QMETATYPE_CONVERTER_ASSIGN(To, UChar); \
1087 QMETATYPE_CONVERTER_ASSIGN(To, SChar); \
1088 QMETATYPE_CONVERTER_ASSIGN(To, Short); \
1089 QMETATYPE_CONVERTER_ASSIGN(To, UShort); \
1090 QMETATYPE_CONVERTER_ASSIGN(To, Int); \
1091 QMETATYPE_CONVERTER_ASSIGN(To, UInt); \
1092 QMETATYPE_CONVERTER_ASSIGN(To, Long); \
1093 QMETATYPE_CONVERTER_ASSIGN(To, ULong); \
1094 QMETATYPE_CONVERTER_ASSIGN(To, LongLong); \
1095 QMETATYPE_CONVERTER_ASSIGN(To, ULongLong); \
1096 QMETATYPE_CONVERTER_ASSIGN(To, Float); \
1097 QMETATYPE_CONVERTER_ASSIGN(To, Double); \
1098 QMETATYPE_CONVERTER(To, QString, \
1100 result = source.toDouble(&ok); \
1103 QMETATYPE_CONVERTER(To, QByteArray, \
1105 result = source.toDouble(&ok); \
1108 CONVERT_CBOR_AND_JSON(To)
1110 switch (makePair(toTypeId, fromTypeId)) {
1128#ifndef QT_BOOTSTRAPPED
1132 result = source.toUrl();
1138#if QT_CONFIG(itemmodel)
1144#define QMETATYPE_CONVERTER_ASSIGN_QCHAR(From) \
1145 QMETATYPE_CONVERTER(QChar, From, result = QChar::fromUcs2(source); return true;)
1195#if QT_CONFIG(datestring)
1204#ifndef QT_BOOTSTRAPPED
1208 result = source.toString();
1248#ifndef QT_NO_GEOM_VARIANT
1297#ifndef QT_BOOTSTRAPPED
1307 if (
source.isByteArray()) {
1308 result = source.toByteArray();
1341#if QT_CONFIG(regularexpression)
1344 if (!
source.isRegularExpression())
1408 if (
source.isDateTime()) {
1409 result = source.toDateTime();
1417 if (
source.isSimpleType()) {
1418 result = source.toSimpleType();
1617#if QT_CONFIG(datestring)
1651template<
typename T,
typename Key>
1664 return map.contains(k);
1672 if (map.size() == oldSize)
1681 auto it = map.find(k);
1682 return it == map.end() ?
nullptr : std::addressof(*
it);
1687 const Key k(from, to);
1758 if (!customTypesConversionRegistry()->insertIfNotContains(
qMakePair(from.id(), to.id()),
f)) {
1759 qWarning(
"Type conversion already registered from type %s to type %s",
1760 from.name(), to.name());
1791 if (!customTypesMutableViewRegistry()->insertIfNotContains(
qMakePair(from.
id(), to.
id()),
f)) {
1792 qWarning(
"Mutable view on type already registered from type %s to type %s",
1804 if (customTypesMutableViewRegistry.isDestroyed())
1806 customTypesMutableViewRegistry()->remove(from.
id(), to.
id());
1816 if (customTypesConversionRegistry.isDestroyed())
1818 customTypesConversionRegistry()->remove(from.
id(), to.
id());
1821#ifndef QT_NO_DEBUG_STREAM
1831 return d.nospace() <<
"QMetaType(" <<
m.name() <<
")";
1842 dbg << *reinterpret_cast<const void * const *>(rhs);
1887#ifndef QT_NO_QOBJECT
1901 enumName = enumName.
sliced(qflagsNamePrefix.
size());
1904 enumName = enumName.
sliced(lastColon + 1);
1917 switch (fromType.
sizeOf()) {
1919 ull = *
static_cast<const unsigned char *
>(from);
1922 ull = *
static_cast<const unsigned short *
>(from);
1925 ull = *
static_cast<const unsigned int *
>(from);
1928 ull = *
static_cast<const quint64 *
>(from);
1933 if (toType.
id() == QMetaType::ULongLong) {
1937 if (toType.
id() != QMetaType::QString && toType.
id() != QMetaType::QByteArray)
1941 switch (fromType.
sizeOf()) {
1943 ll = *
static_cast<const signed char *
>(from);
1946 ll = *
static_cast<const short *
>(from);
1949 ll = *
static_cast<const int *
>(from);
1952 ll = *
static_cast<const qint64 *
>(from);
1957 if (toType.
id() == QMetaType::LongLong) {
1961 if (toType.
id() != QMetaType::QString && toType.
id() != QMetaType::QByteArray)
1964#ifndef QT_NO_QOBJECT
1969 if (toType.
id() == QMetaType::QString)
1975 if (toType.
id() == QMetaType::QString)
1983 if (toType.
id() == QMetaType::QString || toType.
id() == QMetaType::QByteArray)
1990 int fromTypeId = fromType.
id();
1993#ifndef QT_NO_QOBJECT
1994 if (fromTypeId == QMetaType::QString || fromTypeId == QMetaType::QByteArray) {
2005 if (fromTypeId == QMetaType::LongLong) {
2016 switch (toType.
sizeOf()) {
2018 *
static_cast<signed char *
>(to) =
value;
2030 Q_UNREACHABLE_RETURN(
false);
2034#ifndef QT_BOOTSTRAPPED
2060 h.insert(
it.key().toString(),
it.value());
2075 h.insert(
it.key().toString(),
it.value());
2083 customTypesConversionRegistry()->function(
qMakePair(fromType.
id(),
2084 qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>()));
2093 if (
pi._metaType_first == QMetaType::fromType<QVariant>())
2096 dataPtr =
v1.data();
2100 if (
pi._metaType_second == QMetaType::fromType<QVariant>())
2103 dataPtr =
v2.data();
2110#ifndef QT_BOOTSTRAPPED
2114 const int fromTypeId = fromType.
id();
2117 switch (fromTypeId) {
2118 case QMetaType::QVariantList:
2121 case QMetaType::QStringList:
2124 case QMetaType::QByteArrayList:
2127 case QMetaType::QString:
2130 case QMetaType::QByteArray:
2137 i = std::move(impl);
2148 switch (fromType.
id()) {
2149 case QMetaType::QVariantList:
2150 case QMetaType::QStringList:
2151 case QMetaType::QByteArrayList:
2152 case QMetaType::QString:
2153 case QMetaType::QByteArray:
2162 switch (fromType.
id()) {
2163 case QMetaType::QVariantList:
2164 case QMetaType::QStringList:
2165 case QMetaType::QByteArrayList:
2166 case QMetaType::QString:
2167 case QMetaType::QByteArray:
2178 const int fromTypeId = fromType.
id();
2181 switch (fromTypeId) {
2182 case QMetaType::QVariantList:
2185 case QMetaType::QStringList:
2188 case QMetaType::QByteArrayList:
2191 case QMetaType::QString:
2194 case QMetaType::QByteArray:
2215 if (fromType.
id() == QMetaType::QVariantMap) {
2219 if (fromType.
id() == QMetaType::QVariantHash) {
2227 i = std::move(impl);
2249 switch (fromType.
id()) {
2250 case QMetaType::QVariantMap:
2251 case QMetaType::QVariantHash:
2260 switch (fromType.
id()) {
2261 case QMetaType::QVariantMap:
2262 case QMetaType::QVariantHash:
2273 int fromTypeId = fromType.
id();
2276 if (fromTypeId == QMetaType::QVariantMap) {
2280 if (fromTypeId == QMetaType::QVariantHash) {
2304 }
else if (!fromObject && fromType.
metaObject()) {
2306 *
static_cast<void **
>(to) =
nullptr;
2313 if (
f &&
t &&
f->inherits(
t)) {
2356 int toTypeId = toType.
id();
2359 if (moduleHelper->convert(from, fromTypeId, to, toTypeId))
2363 customTypesConversionRegistry()->function(
qMakePair(fromTypeId, toTypeId));
2365 return (*
f)(from, to);
2371 if (toTypeId == Nullptr) {
2372 *
static_cast<std::nullptr_t *
>(to) =
nullptr;
2374 if (*
static_cast<const void *
const *
>(from) ==
nullptr)
2382#ifndef QT_BOOTSTRAPPED
2393 if (toTypeId == qMetaTypeId<QSequentialIterable>())
2396 if (toTypeId == qMetaTypeId<QAssociativeIterable>())
2416 int toTypeId = toType.
id();
2419 customTypesMutableViewRegistry()->function(
qMakePair(fromTypeId, toTypeId));
2421 return (*
f)(from, to);
2423#ifndef QT_BOOTSTRAPPED
2424 if (toTypeId == qMetaTypeId<QSequentialIterable>())
2427 if (toTypeId == qMetaTypeId<QAssociativeIterable>())
2456 int toTypeId = toType.
id();
2462 customTypesMutableViewRegistry()->function(
qMakePair(fromTypeId, toTypeId));
2466#ifndef QT_BOOTSTRAPPED
2467 if (toTypeId == qMetaTypeId<QSequentialIterable>())
2470 if (toTypeId == qMetaTypeId<QAssociativeIterable>())
2554 int toTypeId = toType.
id();
2559 if (fromTypeId == toTypeId)
2563 if (moduleHelper->convert(
nullptr, fromTypeId,
nullptr, toTypeId))
2567 customTypesConversionRegistry()->function(std::make_pair(fromTypeId, toTypeId));
2571#ifndef QT_BOOTSTRAPPED
2572 if (toTypeId == qMetaTypeId<QSequentialIterable>())
2575 if (toTypeId == qMetaTypeId<QAssociativeIterable>())
2590 fromType, QMetaType::fromType<QtMetaTypePrivate::QPairVariantInterfaceImpl>()))
2605#ifndef QT_BOOTSTRAPPED
2698 if (customTypeRegistry.exists()) {
2699 auto reg = &*customTypeRegistry;
2700#if QT_CONFIG(thread)
2701 Q_ASSERT(!reg->lock.tryLockForWrite());
2704 return ti->typeId.loadRelaxed();
2722 if (
auto reg = customTypeRegistry()) {
2724 auto &al = reg->aliases[normalizedTypeName];
2727 al = metaType.d_ptr;
2736 if (customTypeRegistry.exists())
2737 iface = customTypeRegistry->getCustomType(typeId);
2740 iface = moduleHelper->interfaceForType(typeId);
2756template <
bool tryNormalizedType>
2765#ifndef QT_NO_QOBJECT
2769 normalizedTypeName.size());
2772 normalizedTypeName.size());
2815#ifndef QT_NO_DATASTREAM
2833 if (
id() == QMetaType::Long) {
2836 }
else if (
id() == QMetaType::ULong) {
2871 if (
id() == QMetaType::Long) {
2874 *(
long *)
data =
long(ll);
2876 }
else if (
id() == QMetaType::ULong) {
2879 *(
unsigned long *)
data = (
unsigned long)(ull);
2898 if (
type == QMetaType::Long ||
type == QMetaType::ULong)
2928 return QMetaType::fromType<quint8>();
2930 return QMetaType::fromType<quint16>();
2932 return QMetaType::fromType<quint32>();
2934 return QMetaType::fromType<quint64>();
2941 return QMetaType::fromType<qint8>();
2943 return QMetaType::fromType<qint16>();
2945 return QMetaType::fromType<qint32>();
2947 return QMetaType::fromType<qint64>();
3183 qWarning(
"Trying to construct an instance of an invalid type, type id: %i", typeId);
3212#if !defined(QT_BOOTSTRAPPED) && !defined(Q_CC_MSVC) && !defined(Q_OS_INTEGRITY)
3215#define QT_METATYPE_DECLARE_TEMPLATE_ITER(TypeName, Id, Name) \
3216 template class QMetaTypeForType<Name>; \
3217 template struct QMetaTypeInterfaceWrapper<Name>;
3224#undef QT_METATYPE_DECLARE_TEMPLATE_ITER
The QAssociativeIterable class is an iterable interface for an associative container in a QVariant.
T loadRelaxed() const noexcept
constexpr qsizetype size() const noexcept
bool endsWith(char c) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
void chop(qsizetype n)
Removes n bytes from the end of the byte array.
bool startsWith(QByteArrayView bv) const
static QByteArray number(int, int base=10)
Returns a byte-array representing the whole number n as text.
QByteArray sliced(qsizetype pos) const
qsizetype lastIndexOf(char c, qsizetype from=-1) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QByteArray fromRawData(const char *data, qsizetype size)
Constructs a QByteArray that uses the first size bytes of the data array.
\inmodule QtCore\reentrant
QVariantList toVariantList() const
Recursively converts each \l QCborValue in this array using QCborValue::toVariant() and returns the Q...
static QCborArray fromJsonArray(const QJsonArray &array)
Converts all JSON items found in the array array to CBOR using QCborValue::fromJson(),...
QJsonArray toJsonArray() const
Recursively converts every \l QCborValue element in this array to JSON using QCborValue::toJsonValue(...
static QCborArray fromStringList(const QStringList &list)
Returns a QCborArray containing all the strings found in the list list.
static QCborArray fromVariantList(const QVariantList &list)
Converts all the items in the list to CBOR using QCborValue::fromVariant() and returns the array comp...
\inmodule QtCore\reentrant
QVariantMap toVariantMap() const
Converts the CBOR values to QVariant using QCborValue::toVariant() and "stringifies" all the CBOR key...
QVariantHash toVariantHash() const
Converts the CBOR values to QVariant using QCborValue::toVariant() and "stringifies" all the CBOR key...
QJsonObject toJsonObject() const
Recursively converts every \l QCborValue value in this map to JSON using QCborValue::toJsonValue() an...
static QCborMap fromJsonObject(const QJsonObject &o)
Converts all JSON items found in the obj object to CBOR using QCborValue::fromJson(),...
static QCborMap fromVariantMap(const QVariantMap &map)
Converts all the items in map to CBOR using QCborValue::fromVariant() and returns the map composed of...
static QCborMap fromVariantHash(const QVariantHash &hash)
Converts all the items in hash to CBOR using QCborValue::fromVariant() and returns the map composed o...
\inmodule QtCore\reentrant
bool isNull() const
Returns true if this QCborValue is of the null type.
QJsonValue toJsonValue() const
Converts this QCborValue object to an equivalent representation in JSON and returns it as a QJsonValu...
static QCborValue fromJsonValue(const QJsonValue &v)
Converts the JSON value contained in v into its corresponding CBOR value and returns it.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QTime time() const
Returns the time part of the datetime.
QDate date() const
Returns the date part of the datetime.
\inmodule QtCore \reentrant
QDateTime startOfDay(const QTimeZone &zone) const
iterator begin()
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the first item in the hash.
iterator erase(const_iterator it)
T value(const Key &key) const noexcept
iterator end() noexcept
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item after the last ...
void clear() noexcept(std::is_nothrow_destructible< Node >::value)
Removes all items from the hash and frees up all memory used by it.
iterator insert(const Key &key, const T &value)
Inserts a new item with the key and a value of value.
\inmodule QtCore\reentrant
static QJsonArray fromStringList(const QStringList &list)
Converts the string list list to a QJsonArray.
static QJsonArray fromVariantList(const QVariantList &list)
Converts the variant list list to a QJsonArray.
QVariantList toVariantList() const
Converts this object to a QVariantList.
\inmodule QtCore\reentrant
bool isArray() const
Returns true if the document contains an array.
\inmodule QtCore\reentrant
QVariantMap toVariantMap() const
Converts this object to a QVariantMap.
static QJsonObject fromVariantMap(const QVariantMap &map)
Converts the variant map map to a QJsonObject.
QVariantHash toVariantHash() const
Converts this object to a QVariantHash.
static QJsonObject fromVariantHash(const QVariantHash &map)
Converts the variant hash hash to a QJsonObject.
\inmodule QtCore\reentrant
bool isNull() const
Returns true if the value is null.
constexpr QLine toLine() const
Returns an integer-based copy of this line.
qsizetype size() const noexcept
T value(qsizetype i) const
void reserve(qsizetype size)
void append(parameter_type t)
iterator insert(const Key &key, const T &value)
bool inherits(const char *classname) const
Returns true if this object is an instance of a class that inherits className or a QObject subclass t...
static const QPartialOrdering Less
static const QPartialOrdering Greater
static const QPartialOrdering Equivalent
static const QPartialOrdering Unordered
\inmodule QtCore\reentrant
constexpr QPoint toPoint() const
Rounds the coordinates of this point to the nearest integer, and returns a QPoint object with the rou...
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr QRect toRect() const noexcept
Returns a QRect based on the values of this rectangle.
\inmodule QtCore\reentrant
\inmodule QtCore \reentrant
The QSequentialIterable class is an iterable interface for a container in a QVariant.
const_iterator constBegin() const noexcept
constexpr QSize toSize() const noexcept
Returns an integer based copy of this size.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QString toLower() const &
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QByteArray toUtf8() const &
\inmodule QtCore \reentrant
QString toString(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
Returns a string representation of the URL.
QString toString(StringFormat mode=WithBraces) const
QByteArray toByteArray(StringFormat mode=WithBraces) const
QMap< QString, QString > map
[6]
list append(new Employee("Blackpool", "Stephen"))
QSet< QString >::iterator it
Combined button and popup list for selecting options.
void toByteArray(QByteArray &)
static jboolean copy(JNIEnv *, jobject)
size_t qstrlen(const char *str)
std::pair< T1, T2 > QPair
QPair< QVariant, QVariant > QVariantPair
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
constexpr const T & qMax(const T &a, const T &b)
GLint GLfloat GLfloat GLfloat v2
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLsizei GLenum GLenum * types
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLsizei GLchar * source
constexpr decltype(auto) qMakePair(T1 &&value1, T2 &&value2) noexcept(noexcept(std::make_pair(std::forward< T1 >(value1), std::forward< T2 >(value2))))
#define QStringLiteral(str)
unsigned long long quint64
obj metaObject() -> className()
char * toString(const MyType &t)
[31]