我正在使用QML构建桌面应用程序,我想创建一个菜单(加载或创建新项目),然后加载mainWindow(我正在使用QQmlApplicationEngine
,因此ApplicationWindow
作为根)。
但我想允许直接从存储在磁盘上的项目文件加载项目。因此,如果main的argc大于1,即有第二个参数,它是项目文件的路径,因此应用程序不会加载菜单,而是直接加载mainWindow。
所以我的问题是实现它的最佳方法是什么? 我现在正在使用引擎的加载方法,以及if菜单的语句。
答案 0 :(得分:1)
您可以将要下载的文件的路径设置为上下文属性。
然后在onCompleted
main.qml
中检查有效路径(如果有) - 加载文件,如果没有,则加载主菜单。
你可以在没有任何C ++的情况下完成它,在QML中你可以使用Qt.application.arguments[index]
直接访问任何传递的参数。
Component.onCompleted: {
var args = Qt.application.arguments
if (args.length > 1) loadProject(args[1]) // presuming it checks path validity
else loadMenu()
}