43 case QMetaType::Type::UnknownType:
45 case QMetaType::Type::Bool:
46 return QObject::tr(
"Boolean" );
47 case QMetaType::Type::Int:
48 return QObject::tr(
"Integer (32 bit)" );
49 case QMetaType::Type::UInt:
50 return QObject::tr(
"Integer (unsigned 32 bit)" );
51 case QMetaType::Type::LongLong:
52 return QObject::tr(
"Integer (64 bit)" );
53 case QMetaType::Type::ULongLong:
54 return QObject::tr(
"Integer (unsigned 64 bit)" );
55 case QMetaType::Type::Double:
56 return QObject::tr(
"Decimal (double)" );
57 case QMetaType::Type::QChar:
58 return QObject::tr(
"Character" );
59 case QMetaType::Type::QVariantMap:
60 return QObject::tr(
"Map" );
61 case QMetaType::Type::QVariantList:
65 case QMetaType::Type::Int:
66 return QObject::tr(
"Integer List" );
67 case QMetaType::Type::LongLong:
68 return QObject::tr(
"Integer (64 bit) List" );
69 case QMetaType::Type::Double:
70 return QObject::tr(
"Decimal (double) List" );
72 return QObject::tr(
"List" );
75 case QMetaType::Type::QString:
76 return QObject::tr(
"Text (string)" );
77 case QMetaType::Type::QStringList:
78 return QObject::tr(
"String List" );
79 case QMetaType::Type::QByteArray:
80 return QObject::tr(
"Binary Object (BLOB)" );
81 case QMetaType::Type::QBitArray:
82 return QObject::tr(
"Bit Array" );
83 case QMetaType::Type::QDate:
84 return QObject::tr(
"Date" );
85 case QMetaType::Type::QTime:
86 return QObject::tr(
"Time" );
87 case QMetaType::Type::QDateTime:
88 return QObject::tr(
"Date & Time" );
89 case QMetaType::Type::QUrl:
90 return QObject::tr(
"URL" );
91 case QMetaType::Type::QLocale:
92 return QObject::tr(
"Locale" );
93 case QMetaType::Type::QRect:
94 case QMetaType::Type::QRectF:
95 return QObject::tr(
"Rectangle" );
96 case QMetaType::Type::QSize:
97 case QMetaType::Type::QSizeF:
98 return QObject::tr(
"Size" );
99 case QMetaType::Type::QLine:
100 case QMetaType::Type::QLineF:
101 return QObject::tr(
"Line" );
102 case QMetaType::Type::QPoint:
103 case QMetaType::Type::QPointF:
104 return QObject::tr(
"Point" );
105 case QMetaType::Type::QRegularExpression:
106 return QObject::tr(
"Regular Expression" );
107 case QMetaType::Type::QVariantHash:
108 return QObject::tr(
"Hash" );
109 case QMetaType::Type::QEasingCurve:
110 return QObject::tr(
"Easing Curve" );
111 case QMetaType::Type::QUuid:
112 return QObject::tr(
"UUID" );
113 case QMetaType::Type::QModelIndex:
114 case QMetaType::Type::QPersistentModelIndex:
115 return QObject::tr(
"Model Index" );
116 case QMetaType::Type::QFont:
117 return QObject::tr(
"Font" );
118 case QMetaType::Type::QPixmap:
119 return QObject::tr(
"Pixmap" );
120 case QMetaType::Type::QBrush:
121 return QObject::tr(
"Brush" );
122 case QMetaType::Type::QColor:
123 return QObject::tr(
"Color" );
124 case QMetaType::Type::QPalette:
125 return QObject::tr(
"Palette" );
126 case QMetaType::Type::QImage:
127 return QObject::tr(
"Image" );
128 case QMetaType::Type::QPolygon:
129 case QMetaType::Type::QPolygonF:
130 return QObject::tr(
"Polygon" );
131 case QMetaType::Type::QRegion:
132 return QObject::tr(
"Region" );
133 case QMetaType::Type::QBitmap:
134 return QObject::tr(
"Bitmap" );
135 case QMetaType::Type::QCursor:
136 return QObject::tr(
"Cursor" );
137 case QMetaType::Type::QKeySequence:
138 return QObject::tr(
"Key Sequence" );
139 case QMetaType::Type::QPen:
140 return QObject::tr(
"Pen" );
141 case QMetaType::Type::QTextLength:
142 return QObject::tr(
"Text Length" );
143 case QMetaType::Type::QTextFormat:
144 return QObject::tr(
"Text Format" );
145 case QMetaType::Type::QMatrix4x4:
146 return QObject::tr(
"Matrix" );
147 case QMetaType::Type::QTransform:
148 return QObject::tr(
"Transform" );
149 case QMetaType::Type::QVector2D:
150 case QMetaType::Type::QVector3D:
151 case QMetaType::Type::QVector4D:
152 return QObject::tr(
"Vector" );
153 case QMetaType::Type::QQuaternion:
154 return QObject::tr(
"Quaternion" );
155 case QMetaType::Type::QIcon:
156 return QObject::tr(
"Icon" );
157 case QMetaType::Type::QSizePolicy:
158 return QObject::tr(
"Size Policy" );
174 ( void )silenceNullWarnings;
177 if ( variant.isNull() || !variant.isValid() )
180 switch ( variant.userType() )
182 case QMetaType::Type::UnknownType:
183 case QMetaType::Type::Bool:
184 case QMetaType::Type::Int:
185 case QMetaType::Type::UInt:
186 case QMetaType::Type::LongLong:
187 case QMetaType::Type::ULongLong:
188 case QMetaType::Type::Double:
189 case QMetaType::Type::QVariantMap:
190 case QMetaType::Type::QVariantList:
191 case QMetaType::Type::QStringList:
192 case QMetaType::Type::QUrl:
193 case QMetaType::Type::QLocale:
194 case QMetaType::Type::QRegularExpression:
195 case QMetaType::Type::QVariantHash:
196 case QMetaType::Type::QEasingCurve:
197 case QMetaType::Type::QModelIndex:
198 case QMetaType::Type::QPersistentModelIndex:
202 case QMetaType::Type::QDate:
203 if ( variant.toDate().isNull() )
205 if ( !silenceNullWarnings )
207 QgsDebugError( QStringLiteral(
"NULL QDateTime was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
212 case QMetaType::Type::QTime:
213 if ( variant.toTime().isNull() )
215 if ( !silenceNullWarnings )
217 QgsDebugError( QStringLiteral(
"NULL QTime was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
222 case QMetaType::Type::QDateTime:
223 if ( variant.toDate().isNull() )
225 if ( !silenceNullWarnings )
227 QgsDebugError( QStringLiteral(
"NULL QDate was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
232 case QMetaType::Type::QChar:
233 if ( variant.toChar().isNull() )
235 if ( !silenceNullWarnings )
237 QgsDebugError( QStringLiteral(
"NULL QChar was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
242 case QMetaType::Type::QString:
243 if ( variant.toString().isNull() )
245 if ( !silenceNullWarnings )
247 QgsDebugError( QStringLiteral(
"NULL QString was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
252 case QMetaType::Type::QByteArray:
253 if ( variant.toByteArray().isNull() )
255 if ( !silenceNullWarnings )
257 QgsDebugError( QStringLiteral(
"NULL QByteArray was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
262 case QMetaType::Type::QBitArray:
263 if ( variant.toBitArray().isNull() )
265 if ( !silenceNullWarnings )
267 QgsDebugError( QStringLiteral(
"NULL QBitArray was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
272 case QMetaType::Type::QRect:
273 if ( variant.toRect().isNull() )
275 if ( !silenceNullWarnings )
277 QgsDebugError( QStringLiteral(
"NULL QRect was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
282 case QMetaType::Type::QRectF:
283 if ( variant.toRectF().isNull() )
285 if ( !silenceNullWarnings )
287 QgsDebugError( QStringLiteral(
"NULL QRectF was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
292 case QMetaType::Type::QSize:
293 if ( variant.toSize().isNull() )
295 if ( !silenceNullWarnings )
297 QgsDebugError( QStringLiteral(
"NULL QSize was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
302 case QMetaType::Type::QSizeF:
303 if ( variant.toSizeF().isNull() )
305 if ( !silenceNullWarnings )
307 QgsDebugError( QStringLiteral(
"NULL QSizeF was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
312 case QMetaType::Type::QLine:
313 if ( variant.toLine().isNull() )
315 if ( !silenceNullWarnings )
317 QgsDebugError( QStringLiteral(
"NULL QLine was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
322 case QMetaType::Type::QLineF:
323 if ( variant.toLineF().isNull() )
325 if ( !silenceNullWarnings )
327 QgsDebugError( QStringLiteral(
"NULL QLineF was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
332 case QMetaType::Type::QPoint:
333 if ( variant.toPoint().isNull() )
335 if ( !silenceNullWarnings )
337 QgsDebugError( QStringLiteral(
"NULL QPoint was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
342 case QMetaType::Type::QPointF:
343 if ( variant.toPointF().isNull() )
345 if ( !silenceNullWarnings )
347 QgsDebugError( QStringLiteral(
"NULL QPointF was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
352 case QMetaType::Type::QUuid:
353 if ( variant.toUuid().isNull() )
355 if ( !silenceNullWarnings )
357 QgsDebugError( QStringLiteral(
"NULL QUuid was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
362 case QMetaType::Type::QPixmap:
363 if ( variant.value< QPixmap >().isNull() )
365 if ( !silenceNullWarnings )
367 QgsDebugError( QStringLiteral(
"NULL QPixmap was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
372 case QMetaType::Type::QImage:
373 if ( variant.value< QImage >().isNull() )
375 if ( !silenceNullWarnings )
377 QgsDebugError( QStringLiteral(
"NULL QImage was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
382 case QMetaType::Type::QRegion:
383 if ( variant.value< QRegion >().isNull() )
385 if ( !silenceNullWarnings )
387 QgsDebugError( QStringLiteral(
"NULL QRegion was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
392 case QMetaType::Type::QBitmap:
393 if ( variant.value< QBitmap >().isNull() )
395 if ( !silenceNullWarnings )
397 QgsDebugError( QStringLiteral(
"NULL QBitmap was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
402 case QMetaType::Type::QIcon:
403 if ( variant.value< QIcon >().isNull() )
405 if ( !silenceNullWarnings )
407 QgsDebugError( QStringLiteral(
"NULL QIcon was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
412 case QMetaType::Type::QVector2D:
413 if ( variant.value< QVector2D >().isNull() )
415 if ( !silenceNullWarnings )
417 QgsDebugError( QStringLiteral(
"NULL QVector2D was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
422 case QMetaType::Type::QVector3D:
423 if ( variant.value< QVector3D >().isNull() )
425 if ( !silenceNullWarnings )
427 QgsDebugError( QStringLiteral(
"NULL QVector3D was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
432 case QMetaType::Type::QVector4D:
433 if ( variant.value< QVector4D >().isNull() )
435 if ( !silenceNullWarnings )
437 QgsDebugError( QStringLiteral(
"NULL QVector4D was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
442 case QMetaType::Type::QQuaternion:
443 if ( variant.value< QQuaternion >().isNull() )
445 if ( !silenceNullWarnings )
447 QgsDebugError( QStringLiteral(
"NULL QQuaternion was stored in a QVariant -- stop it! Always use an invalid QVariant() instead." ) );
453 case QMetaType::Type::QColor:
454 case QMetaType::Type::QFont:
455 case QMetaType::Type::QBrush:
456 case QMetaType::Type::QPolygon:
457 case QMetaType::Type::QPalette:
458 case QMetaType::Type::QCursor:
459 case QMetaType::Type::QKeySequence:
460 case QMetaType::Type::QPen:
461 case QMetaType::Type::QTextLength:
462 case QMetaType::Type::QPolygonF:
463 case QMetaType::Type::QTextFormat:
464 case QMetaType::Type::QTransform:
465 case QMetaType::Type::QMatrix4x4:
466 case QMetaType::Type::QSizePolicy:
467 case QMetaType::Type::User:
508 case QMetaType::Bool:
510 case QMetaType::UInt:
511 case QMetaType::LongLong:
512 case QMetaType::ULongLong:
513 case QMetaType::Double:
514 case QMetaType::QChar:
515 case QMetaType::QVariantMap:
516 case QMetaType::QVariantList:
517 case QMetaType::QString:
518 case QMetaType::QStringList:
519 case QMetaType::QByteArray:
520 case QMetaType::QBitArray:
521 case QMetaType::QDate:
522 case QMetaType::QTime:
523 case QMetaType::QDateTime:
524 case QMetaType::QUrl:
525 case QMetaType::QLocale:
526 case QMetaType::QRect:
527 case QMetaType::QRectF:
528 case QMetaType::QSize:
529 case QMetaType::QSizeF:
530 case QMetaType::QLine:
531 case QMetaType::QLineF:
532 case QMetaType::QPoint:
533 case QMetaType::QPointF:
534 case QMetaType::QRegularExpression:
535 case QMetaType::QVariantHash:
536 case QMetaType::QEasingCurve:
537 case QMetaType::QUuid:
538 case QMetaType::QModelIndex:
539 case QMetaType::QPersistentModelIndex:
540 case QMetaType::QFont:
541 case QMetaType::QPixmap:
542 case QMetaType::QBrush:
543 case QMetaType::QColor:
544 case QMetaType::QPalette:
545 case QMetaType::QImage:
546 case QMetaType::QPolygon:
547 case QMetaType::QRegion:
548 case QMetaType::QBitmap:
549 case QMetaType::QCursor:
550 case QMetaType::QKeySequence:
551 case QMetaType::QPen:
552 case QMetaType::QTextLength:
553 case QMetaType::QTextFormat:
554 case QMetaType::QTransform:
555 case QMetaType::QMatrix4x4:
556 case QMetaType::QVector2D:
557 case QMetaType::QVector3D:
558 case QMetaType::QVector4D:
559 case QMetaType::QQuaternion:
560 case QMetaType::QPolygonF:
561 case QMetaType::QIcon:
562 case QMetaType::QSizePolicy:
563 case QMetaType::UnknownType:
564 case QMetaType::User:
565 return static_cast< QVariant::Type
>( metaType );
569 case QMetaType::Long:
570 return QVariant::Type::LongLong;
572 case QMetaType::ULong:
573 return QVariant::Type::ULongLong;
575 case QMetaType::Char:
576#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
577 case QMetaType::Char16:
578 case QMetaType::Char32:
580 case QMetaType::Short:
581 case QMetaType::SChar:
582 return QVariant::Type::Int;
584 case QMetaType::UShort:
585 case QMetaType::UChar:
586 return QVariant::Type::UInt;
588 case QMetaType::Float:
589#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
590 case QMetaType::Float16:
592 return QVariant::Type::Double;
595 case QMetaType::Nullptr:
596 case QMetaType::QCborSimpleType:
597 case QMetaType::Void:
598 case QMetaType::VoidStar:
599 case QMetaType::QVariant:
600 case QMetaType::QJsonValue:
601 case QMetaType::QJsonObject:
602 case QMetaType::QJsonArray:
603 case QMetaType::QJsonDocument:
604 case QMetaType::QCborValue:
605 case QMetaType::QCborArray:
606 case QMetaType::QCborMap:
607 case QMetaType::QObjectStar:
608#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
609 case QMetaType::QVariantPair:
611 case QMetaType::QByteArrayList:
612 case QMetaType::QColorSpace:
619 return QVariant::Type::UserType;