Tôi đang cố gắng để vượt qua một đối tượng JS (bản đồ) đến một chức năng C thành viên ++ với một chữ kýQML: đi qua đối tượng JS C++ chức năng thành viên
Q_INVOKABLE virtual bool generate(QObject* context);
bằng cách sử dụng
a.generate({foo: "bar"});
Phương pháp này được gọi (được phát hiện qua điểm ngắt), nhưng thông số context
được chuyển là NULL
. Kể từ the documentation đề cập rằng đối tượng JS sẽ được thông qua như QVariantMap
, tôi đã cố gắng sử dụng chữ ký
Q_INVOKABLE virtual bool generate(QVariantMap* context);
nhưng điều này đã thất bại trong MOC. Sử dụng
Q_INVOKABLE virtual bool generate(QVariantMap& context);
gây phương pháp để không bị phát hiện trong thời gian chạy bởi QML (thông báo lỗi là "Unknown loại tham số phương pháp: QVariantMap &").
Tài liệu chỉ có ví dụ về việc chuyển số QVariantMap
từ C++ sang QML, không theo hướng khác.
Sử dụng public slot
thay vì Q_INVOKABLE
cho biết chính xác cùng một hành vi và lỗi.
Cảm ơn bạn, công trình này. – pmf