私はQtのアプリ、QMLウィンドウやカスタムクラス、それはqmlRegisterType()
に登録されているを持っている、これは基本的に私のmain
です:Accessコマンドライン引数
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<MyType>(...);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/MyType.qml")));
}
私が変化することを、重要なコマンドラインオプションを持っています私はQMLを経由して、コマンドライン引数にアクセスしたい理由ですMyType
のコンストラクタは、私は少しを調査し、私がこれまでに二つの方法を参照してください。その仕様のQt 5が持っていたまで、Qtのドキュメントに存在していた
- 神秘
Qt.Application.arguments
、されているr eleased。 Link. qmlファイルのApplication.arguments
にアクセスできますが、次にそれをどうすればいいですか? QMLエンジンは未定義のタイプだと言っていますが、リストのようにアクセスすることはできません。 e。Application.arguments[0]
はエラーTypeError: Cannot read property '0' of undefined
を返します。 QCommandLineParser
でコマンドライン引数を取得し、何とかそれをqmlRegisterType()
で登録された私のカスタムクラスに渡します。私が理解する限り、MyType
のコンストラクタはQMLエンジン自体によって呼び出されますが、どのように引数を渡すことができますか?
'Qt.application.arguments [index]'は、 'Application.arguments'ではなく、引数を呼び出す正しい方法です。 'Component.onCompleted:console.info("実行可能: "+ Qt.application.arguments [0])'は完璧に動作します。あなたはオプション1に行くことができないことを考えると?オプション2は実行可能かもしれないが、アウトオブボックスではない。 – BaCaRoZzo
あなたは正しいです、argsは 'Qt.application.arguments [index]'を介してアクセス可能ですが、私は主に文書の不足のためにそれを得ることができませんでした。 Qt Creatorはまた、 'arguments'をオートコンプリートしません。 – Asalle