--------
* [QTBUG-20615] Autotests can now log test output to multiple destinations
and log formats simultaneously.
+* [QTBUG-21645] QSignalSpy now handles QVariant signal parameters more
+ intuitively; the QVariant value is copied directly, instead of being
+ wrapped inside a new QVariant. This means that calling
+ qvariant_cast<QVariant>() on the QSignalSpy item (to "unwrap" the value)
+ is no longer required (but still works).
QtSql
-----
QList<QVariant> list;
for (int i = 0; i < args.count(); ++i) {
QMetaType::Type type = static_cast<QMetaType::Type>(args.at(i));
- list << QVariant(type, a[i + 1]);
+ if (type == QMetaType::QVariant)
+ list << *reinterpret_cast<QVariant *>(a[i + 1]);
+ else
+ list << QVariant(type, a[i + 1]);
}
append(list);
void sig2(const QDateTime &dt);
void sig3(QObject *o);
void sig4(QChar c);
+ void sig5(const QVariant &v);
};
void tst_QSignalSpy::spyWithBasicQtClasses()
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.at(0).count(), 1);
QCOMPARE(spy.at(0).at(0).toString(), QString("bubu"));
+
+ QSignalSpy spy2(&obj, SIGNAL(sig5(QVariant)));
+ QVariant val(45);
+ emit obj.sig5(val);
+ QCOMPARE(spy2.count(), 1);
+ QCOMPARE(spy2.at(0).count(), 1);
+ QCOMPARE(spy2.at(0).at(0), val);
+ QCOMPARE(qvariant_cast<QVariant>(spy2.at(0).at(0)), val);
}
void tst_QSignalSpy::spyWithQtClasses()