Próbuję przekazać obiekt JS (mapa) do C funkcji członka ++ z podpisemQML: przekazaniem obiektu JS do C++ funkcji członka
Q_INVOKABLE virtual bool generate(QObject* context);
za pomocą
a.generate({foo: "bar"});
Sposób jest wywoływany (wykrywany przez punkt przerwania), ale przekazany parametr context
to NULL
. Od the documentation wspomina, że obiekty JS będą przekazywane jako QVariantMap
, próbowałem przy użyciu podpisu
Q_INVOKABLE virtual bool generate(QVariantMap* context);
ale nie powiodło się podczas MOC. Korzystanie
Q_INVOKABLE virtual bool generate(QVariantMap& context);
powoduje metody nie można znaleźć w czasie wykonywania przez QML (komunikat o błędzie „Nieznany typ parametru metoda: QVariantMap &”).
W dokumentacji podano tylko przykład przekazania QVariantMap
z C++ do QML, a nie w przeciwnym kierunku.
Używanie public slot
zamiast Q_INVOKABLE
pokazuje dokładnie to samo zachowanie i błędy.
Dziękuję, to działa. – pmf