我正在尝试编写一个由 qmlscene 启动的 QML 应用程序。我希望它接受参数,因此我使用参数对象。但是,这会获取传递给 qmlscene 的参数以及我想要传递给程序的参数。更成问题的是,如果其中一个参数是文件,qmlscene 会尝试处理它,失败或挂起。有没有解决这个问题的好方法?
我尝试的第一件事是将参数作为 qmlscene 会忽略的特定命名参数传入。启动行看起来像qmlscene -I <directory> <qml file> --appargs="$*"
. ($*
将所有参数作为单个字符串的 bashism。)对于单个参数,这非常有效。但如果我想传入多个参数,我必须自己解析它们,这有点违背了使用参数解析器的目的。
查看一些示例.desktop
文件,我注意到它们将参数放在 qml 文件之前,因此我尝试了类似 的命令行qmlscene "$@" -I <directory> <qml file>
。这确实阻止了 qmlscene 尝试解释这些参数。但如果我不传递任何参数,Arguments 对象将很乐意处理用于 qmlscene 的参数。所以我仍然需要在这里进行一些处理。我不禁怀疑我错过了更好的方法。它是什么?
答案1
http://qt-project.org/doc/qt-5.1/qtqml/qtqml-releasenotes.html建议在 Qt 5.1 中有一个 Qt.application.arguments 属性。但我不知道这是否满足了要求。