我正在编写一个带有返回QNetworkReply::NetworkError
的方法的C ++类。我想在QML中使用这个枚举,而不仅仅将它视为一个整数,以便我可以这样做:
if (myObject.error() == NetworkError.OperationCanceledError) {
而不是
if (myObject.error() == 5) {
答案 0 :(得分:5)
您需要做的就是:
在main中:
qmlRegisterUncreatableType<QNetworkReply>("someimport", 1, 0, "QNetworkReply", "none");
然后在qml:
import someimport 1.0
...
if (myObject.error() == QNetworkReply.OperationCanceledError) {
QNetworkReply已包含Q_ENUM和Q_DECLARE_METATYPE宏,因此剩下的就是将其导出为QML
答案 1 :(得分:2)
一般情况下,您只需使用Q_ENUM宏将枚举公开给QML,但我认为您还需要使用qmlRegisterType注册相关的类类型。
所以,如果你做了像
这样的事情Q_ENUM(NetworkError) // in myclass.h
qmlRegisterType<App>("com.myapp.classes", 1, 0, "MyClass"); // in myclass.cpp
您应该可以使用以下命令访问QML中的枚举:
import com.myapp.classes 1.0
if (myObject.error() == MyClass.OperationCanceledError) { ... }