[gelöst] QVariant und quint8*

Alles rund um die Programmierung mit Qt
Antworten
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

[gelöst] QVariant und quint8*

Beitrag von bobcat »

Ich habe eine Klasse, die ein Signal versendet, das einen quint8* als Parameter enthält.

Code: Alles auswählen

signals:
    void mySignal(quint8* myParam);
Für diese Klasse schreibe ich Unittests und überwache das Signal mit einem QSignalSpy

Code: Alles auswählen

QSignalSpy mySpy(&myClass, SIGNAL(mySignal(quint8*)));
Den Inhalt meines Zeigers (->Arrays) möchte ich überprüfen. Ich extrahiere also den QVariant aus dem Signal:

Code: Alles auswählen

QVariant myParam = mySpy.takeFirst().at(0);
An dieser Stelle müsste ich einen QVariant haben, in den ein quint8* verpackt ist. Alle meine Versuche, den auszupacken, waren bisher erfolglos. Hat jemand eine Idee, wie man's machen muss?
Zuletzt geändert von bobcat am 28. November 2016 15:30, insgesamt 1-mal geändert.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QVariant und quint8*

Beitrag von bobcat »

Code: Alles auswählen

Q_DECLARE_METATYPE(quint8*)
class MyTestClass : public QObject
{
private slots:
    void initTestCase()
    {
        qRegisterMetaType<quint8*>("quint8*");
    }
}
void testSpy()
{
    QSignalSpy mySpy(&myClass, SIGNAL(mySignal(quint8*)));
    
    // some code that causes signal to be sent
    
    QCOMPARE(spyCan.count(), 1);
    QList<QVariant> args = mySpy.takeFirst();
    QCOMPARE(args.at(0).value<quint8*>()[0], expectedBuffer[0]);
}
Der obige Code läuft bei mir. Wichtig war, den Q_DECLARE_METATYPE VOR der Testklasse aufzurufen.
Antworten