如果作为参数传递,则打开文件,否则打开主应用程序菜单

时间:2018-03-16 19:09:18

标签: c++ qt qml

我正在使用QML构建桌面应用程序,我想创建一个菜单(加载或创建新项目),然后加载mainWindow(我正在使用QQmlApplicationEngine,因此ApplicationWindow作为根)。

但我想允许直接从存储在磁盘上的项目文件加载项目。因此,如果main的argc大于1,即有第二个参数,它是项目文件的路径,因此应用程序不会加载菜单,而是直接加载mainWindow。

所以我的问题是实现它的最佳方法是什么? 我现在正在使用引擎的加载方法,以及if菜单的语句。

1 个答案:

答案 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()
  }