私はQNetworkReply::NetworkError
を返すメソッドでC++クラスを作成しています。代わりに、一般的にはQtビルトイン列挙型をQMLに公開するにはどうすればいいですか?
if (myObject.error() == 5) {
私はQNetworkReply::NetworkError
を返すメソッドでC++クラスを作成しています。代わりに、一般的にはQtビルトイン列挙型をQMLに公開するにはどうすればいいですか?
if (myObject.error() == 5) {
あなたがやらなければならないことは、次のとおりです。メインで
:
qmlRegisterUncreatableType<QNetworkReply>("someimport", 1, 0, "QNetworkReply", "none");
qミリリットル:
はimport someimport 1.0
...
if (myObject.error() == QNetworkReply.OperationCanceledError) {
QNetworkReplyがすでにQ_ENUMとQ_DECLARE_METATYPEマクロが含まれているので、残っているものQML
の
if (myObject.error() == NetworkError.OperationCanceledError) {
をあなただけQ_ENUMマクロを使用する必要があります。私は私が行うことができるように、QMLの内部でこの列挙を使用していないだけで、整数として扱いたいです列挙型を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) { ... }
私は 'Q_ENUM(QNetworkReply :: NetworkError)'パートに苦しんだにそれをエクスポートすることです。 'function 'const QMetaObject * qt_getEnumMetaObject(QNetworkReply :: NetworkError)はQtのライブラリ内ですでに' Q_ENUM'マクロが使用されていることを知っています。 –