我有一个Qt应用程序,QML窗口和一个自定义类,即与qmlRegisterType()
注册,这基本上是我main
:访问命令行参数
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<MyType>(...);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/MyType.qml")));
}
我有一个重要的命令行选项,即改变的MyType
构造,这就是为什么我想通过QML访问命令行参数,我研究了一下,我看到两个方面至今:
- 神秘
Qt.Application.arguments
,其规格是目前Qt文档中,直到Qt的5例被r eleased。 Link. 我可以在我的qml文件中访问Application.arguments
,但下一步该怎么做? QML引擎说它是未定义的类型,我不能像列表一样访问它,即Application.arguments[0]
给出错误TypeError: Cannot read property '0' of undefined
。 - 获取带有
QCommandLineParser
的命令行参数,并以某种方式将它传递给我的自定义类,使用qmlRegisterType()
注册。据我了解,MyType
的构造函数是由QML引擎本身调用的,那么我怎样才能将它的参数传递给它呢?
'Qt.application.arguments [index]'是调用参数的正确方法,而不是'Application.arguments'。 'Component.onCompleted:console.info(“Executable:”+ Qt.application.arguments [0])'工作得很好。鉴于你不能去选择1?选项二可能是可行的,但不是开箱即用的。 – BaCaRoZzo
你说得对,通过'Qt.application.arguments [index]'可以访问参数,主要是因为缺少文档而无法获取参数。顺便说一句,Qt Creator也不会自动完成'arguments'。 – Asalle