我有一個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