Kann Slot oder Q_INVOKABLE nicht von QML in der Unterklasse von QQmlPropertyMap aufrufen

8

Ich versuche, die QQmlPropertyMap -Klasse zu testen. Es scheint, dass es gut für das funktionieren könnte, was ich will, wenn ich es unterklassifizieren kann. Die Dokumentation hier gibt sogar einige rudimentäre Anweisungen, was zu tun ist, um sie zu unterklassifizieren. Diese Dokumentation zeigt auch, dass diese Klasse von QObject abgeleitet ist.

Für was es wert ist, verwende ich QtCreator 2.6.1 auf Qt 5.0.0 mit QtQuick 2.0.

Meine main.qml:

%Vor%

Mein main.cpp:

%Vor%

Meine TestMap.h

%Vor%

Wenn ich renne, bekomme ich ein Fenster, das "Wert" sagt, wie ich es erwarten würde. Aber wenn ich auf das Fenster klicke, bekomme ich eine Konsolenausgabe, die sagt:

%Vor%

Ich habe nach ähnlichen Problemen gesucht, aber bei allen Suchergebnissen handelt es sich um Personen, die vergessen haben, das Makro Q_OBJECT einzufügen. Es muss etwas sein, was ich falsch im Code mache, denn wenn ich alle in den Kommentaren der TestMap-Datei angegebenen Änderungen mache (und die main.cpp und main.qml genauso belasse), bekomme ich qDebug Nachricht erwarte ich.

Ich bin mir nicht sicher, ob ich Q_DECLARE_METATYPE oder nicht (ich denke, der 2-arg geschützte Konstruktor soll es für mich tun), aber es funktioniert nicht so oder so.

Für die Aufzeichnung, die einzigen Dinge, die ich ändern muss, um es zum Laufen zu bringen, sind:

1) Ableiten von QObject anstelle von QQmlPropertyMap .

2) Ändern Sie den Konstruktor in:

%Vor%

Und das ist es. Da es funktioniert, wenn ich nichts über die main.cpp, main.qml oder den Slot selbst ändere, muss ich schlussfolgern, dass mit diesen nichts verkehrt ist. Kann mir jemand sagen, was ich falsch mache?

    
kanders84152 22.02.2013, 03:19
quelle

1 Antwort

1

Dies ist jetzt in Qt 5.1.0 und höher behoben. Weitere Informationen finden Sie in der folgenden Codereview-URL:

Ссылка

    
lpapp 07.09.2013, 14:32
quelle

Tags und Links