我正在尝试编写一个由 qmlscene 启动的 QML 应用程序。我希望它接受参数,所以我使用了Arguments对象。但是,这会获取传递给 qmlscene 的参数以及我想传递给我的程序的参数。更成问题的是,如果参数之一是文件,qmlscene 会尝试处理它,失败或挂起。有没有解决这个问题的好方法?
我尝试的第一件事是将参数作为 qmlscene 会忽略的特定命名参数传递。发射线看起来像qmlscene -I <directory> <qml file> --appargs="$*"。($*是将所有参数作为单个字符串的 bashism。)对于单个参数,这非常有效。但是如果我想传入多个参数,我必须自己解析它们,这有点违背了使用参数解析器的目的。
查看一些示例.desktop文件,我注意到他们将参数放在 qml 文件之前,所以我尝试了像qmlscene "$@" -I <directory> <qml file>. 这确实阻止了 qmlscene 试图解释这些参数。但是如果我不传递任何参数,Arguments 对象将很乐意处理用于 qmlscene 的参数。所以这里还是要做一些处理。我不禁怀疑我错过了更好的方法。它是什么?