Me gusta acceder a un QObject registrado desde un recurso js importado (qml -> .js -> Módulo). El acceso desde QML funciona, pero el uso de ".importar" como se explica en los documentos desde el archivo js no lo hace. Algunos problemas relacionados dan la impresión de que puede funcionar ( otro ) o no .
¿Es generalmente posible y cómo, solo es posible para ciertos módulos, o no es posible en absoluto?
Código con la salida anotada de las salidas de la consola:
main.cpp
[...] qmlRegisterSingletonInstance<MyModule>("org.example.MyModule", 1, 0, "MyModule", (new MyModule())); [...] MyModule.hpp
#pragma once #include <QObject> class MyModule : public QObject { Q_OBJECT public: enum SOMETHING { AAA, BBB, CCC, DDD, EEE, FFF }; Q_ENUM(SOMETHING) }; main.qml
import org.example.MyModule 1.0 import "qrc:/something.js" as Something [...] console.log(MyModule, MyModule.DDD)// prints something like: "MyModule(0x....) 3" [...] Something.doit() [...] something.js
.import org.example.MyModule 1.0 as MyModule [...] console.log(MyModule, MyModule.DDD) // prints something like: "[object Object] undefined" [...]Recibí una respuesta del soporte: Aparentemente, debe prefijar el Módulo con el espacio de nombres de importación, es decir, MyModule.MyModule.DDD en lugar de MyModule.DDD :
.import org.example.MyModule 1.0 as MyModule [...] console.log(MyModule.MyModule, MyModule.MyModule.DDD) [...]