Implement conversion from nullptr QVariant to QString and QByteArray
A nullptr QVariant should become a null QString or QByteArray, since null strings have previous in our APIs represented the null value in the absence of a dedicated null metatype. Change-Id: I3b8f6386ece314d7c196959fbcf042c4fe0508a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
fbe84a1a19
commit
74197140be
|
|
@ -470,6 +470,9 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
|
|||
case QVariant::Uuid:
|
||||
*str = v_cast<QUuid>(d)->toString();
|
||||
break;
|
||||
case QMetaType::Nullptr:
|
||||
*str = QString();
|
||||
break;
|
||||
default:
|
||||
#ifndef QT_NO_QOBJECT
|
||||
{
|
||||
|
|
@ -652,6 +655,9 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
|
|||
case QVariant::Uuid:
|
||||
*ba = v_cast<QUuid>(d)->toByteArray();
|
||||
break;
|
||||
case QMetaType::Nullptr:
|
||||
*ba = QByteArray();
|
||||
break;
|
||||
default:
|
||||
#ifndef QT_NO_QOBJECT
|
||||
{
|
||||
|
|
@ -3278,11 +3284,11 @@ bool QVariant::canConvert(int targetTypeId) const
|
|||
case QVariant::Bitmap:
|
||||
return currentType == QVariant::Pixmap || currentType == QVariant::Image;
|
||||
case QVariant::ByteArray:
|
||||
return currentType == QVariant::Color
|
||||
return currentType == QVariant::Color || currentType == QMetaType::Nullptr
|
||||
|| ((QMetaType::typeFlags(currentType) & QMetaType::IsEnumeration) && QMetaType::metaObjectForType(currentType));
|
||||
case QVariant::String:
|
||||
return currentType == QVariant::KeySequence || currentType == QVariant::Font
|
||||
|| currentType == QVariant::Color
|
||||
|| currentType == QVariant::Color || currentType == QMetaType::Nullptr
|
||||
|| ((QMetaType::typeFlags(currentType) & QMetaType::IsEnumeration) && QMetaType::metaObjectForType(currentType));
|
||||
case QVariant::KeySequence:
|
||||
return currentType == QVariant::String || currentType == QVariant::Int;
|
||||
|
|
|
|||
|
|
@ -1062,6 +1062,7 @@ void tst_QVariant::toByteArray_data()
|
|||
|
||||
QTest::newRow( "longlong" ) << QVariant( (qlonglong)34 ) << QByteArray( "34" );
|
||||
QTest::newRow( "ulonglong" ) << QVariant( (qulonglong)34 ) << QByteArray( "34" );
|
||||
QTest::newRow( "nullptr" ) << QVariant::fromValue(nullptr) << QByteArray();
|
||||
}
|
||||
|
||||
void tst_QVariant::toByteArray()
|
||||
|
|
@ -1071,7 +1072,13 @@ void tst_QVariant::toByteArray()
|
|||
QVERIFY( value.isValid() );
|
||||
QVERIFY( value.canConvert( QVariant::ByteArray ) );
|
||||
QByteArray ba = value.toByteArray();
|
||||
QCOMPARE( ba.isNull(), result.isNull() );
|
||||
QCOMPARE( ba, result );
|
||||
|
||||
QVERIFY( value.convert( QVariant::ByteArray ) );
|
||||
QCOMPARE( value.isNull(), result.isNull() );
|
||||
QCOMPARE( value.toByteArray().isNull(), result.isNull() );
|
||||
QCOMPARE( value.toByteArray(), result );
|
||||
}
|
||||
|
||||
void tst_QVariant::toString_data()
|
||||
|
|
@ -1098,6 +1105,7 @@ void tst_QVariant::toString_data()
|
|||
QString( "123456789012" );
|
||||
QTest::newRow("QJsonValue") << QVariant(QJsonValue(QString("hello"))) << QString("hello");
|
||||
QTest::newRow("QJsonValue(Null)") << QVariant(QJsonValue(QJsonValue::Null)) << QString();
|
||||
QTest::newRow("nullptr") << QVariant::fromValue(nullptr) << QString();
|
||||
}
|
||||
|
||||
void tst_QVariant::toString()
|
||||
|
|
@ -1107,7 +1115,13 @@ void tst_QVariant::toString()
|
|||
QVERIFY( value.isValid() );
|
||||
QVERIFY( value.canConvert( QVariant::String ) );
|
||||
QString str = value.toString();
|
||||
QCOMPARE( str.isNull(), result.isNull() );
|
||||
QCOMPARE( str, result );
|
||||
|
||||
QVERIFY( value.convert( QVariant::String ) );
|
||||
QCOMPARE( value.isNull(), result.isNull() );
|
||||
QCOMPARE( value.toString().isNull(), result.isNull() );
|
||||
QCOMPARE( value.toString(), result );
|
||||
}
|
||||
|
||||
void tst_QVariant::toDate_data()
|
||||
|
|
|
|||
Loading…
Reference in New Issue