如何在QML中编写条件导入语句?

Aqu*_*irl 10 linux qt preprocessor qml qtquick2

就像我们在C++中有条件包含的预处理器指令一样.

同样,如何import在QML中进行条件化?

if x  
    import ABC 1.0  
else  
    import PQR 2.0  
Run Code Online (Sandbox Code Playgroud)

Yoa*_*ann 8

根据您想要实现的目标,可能的解决方法是使用Loader.但它不会导入模块,它只允许动态选择您将使用的QML组件.

Loader
{
    source: condition?"RedRectangle.qml":"BlueRectangle.qml"
}
Run Code Online (Sandbox Code Playgroud)


Rui*_*ião 5

稍微扩展一下@Yoann 的答案:

 Loader
 {
        source: x?"ABC.qml":"PQR.qml"
 }
Run Code Online (Sandbox Code Playgroud)

其中 ABC.qml :

import ABC 1.0
...
Run Code Online (Sandbox Code Playgroud)

和 PQR.qml :

import PQR 2.0  
...
Run Code Online (Sandbox Code Playgroud)

或者,如果没有真正的 qml 文件,您可以在运行时使用以下命令创建它们:

Loader{
  source:x ? Qt.createQmlObject('import ABC 1.0;',parentItem,"dynamicSnippet1") : Qt.createQmlObject('import PQR 2.0;',parentItem,"dynamicSnippet1")
}
Run Code Online (Sandbox Code Playgroud)