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

时间:2014-12-12 09:22:16

标签: linux qt preprocessor qml qtquick2

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

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

if x  
    import ABC 1.0  
else  
    import PQR 2.0  

2 个答案:

答案 0 :(得分:8)

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

Loader
{
    source: condition?"RedRectangle.qml":"BlueRectangle.qml"
}

答案 1 :(得分:1)

扩展@Yoann的答案:

 Loader
 {
        source: x?"ABC.qml":"PQR.qml"
 }

其中ABC.qml:

import ABC 1.0
...

和PQR.qml:

import PQR 2.0  
...

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

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