4
QMLQtを学習しており、enum class
をqml
に渡すときに問題が発生します。QMLにenumクラスを渡すには?
私は信号をint
のパラメータで使用していますが、それは問題なく、完全に機能します。
しかし、とここでトラブル、私はいくつかのenum class
パラメータで信号を使用する場合、私はQMLのシグナルハンドラでundefined
値を持っています。 enum class
からqmlRegisterType
まで登録しようとしましたが、動作しません。私は助けに感謝します。ここで
コード:
Helper
クラスのいくつか
class Helper : public QObject
{
Q_OBJECT
Q_ENUMS(Requester)
Q_ENUMS(JANSWER)
public:
enum class Requester {
ReqLogin,
ReqNull,
ReqSave,
ReqError,
ReqUnknown
};
enum class JANSWER {
OK,
Complete,
Error,
Unknown
};
};
main.cppに
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<JsonPackWorker>("com.jsonpackworker", 1, 0, "JsonPackWorker");
qmlRegisterType<Helper>("com.Helper", 1, 0, "Helper");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
JsonPackWorker.h
class JsonPackWorker : public QObject
{
Q_OBJECT
public:
<...>
signals:
<...>
void sendAnswer(Helper::Requester req, Helper::JANSWER answer);
public slots:
<...>
};
Somewehere main.qml
<...>
import com.jsonpackworker 1.0
import com.Helper 1.0
ApplicationWindow {
id: mainWindow
// Requests in answers
property int reqLogin: Helper.ReqLogin
<...>
JsonPackWorker {
id: packWorker
<...>
onSendAnswer: {
// Here I've got undefined undefined if there enum class parameters
console.log(req + " " + answer)
switch(req) {
case reqLogin: loginDial.checkLogin(answer)
break;
default:
}
}
}
}
※どのように動作しませんか?ビルドエラーが出ますか?実行時にクラッシュしますか?予想外の結果ですか?他に何か?詳しく教えてください。あなたがまだそれをしていない場合は、[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)をご覧ください。 –
'enum class'を' enum'に変更すると動作しますか? – coyotte508
@ Joachim Pileborg、私はハンドラに未定義の値があると書いています。コードは 'console.log()'を表示します。ここではその説明にコメントを付けました。 – someoneinthebox