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

Posted

技术标签:

【中文标题】如何在 QML 中编写条件导入语句?【英文标题】:How to write conditional import statements in QML? 【发布时间】:2014-12-12 09:22:16 【问题描述】:

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

同理,QML 中的条件importing 怎么办?

if x  
    import ABC 1.0  
else  
    import PQR 2.0  

【问题讨论】:

QML 中没有真正的条件导入 检查条件导入的以下功能。 bugreports.qt-project.org/browse/QTBUG-16854 @deimus Feature request,你的意思是,不幸的是,它无处可去,似乎...... 【参考方案1】:

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

Loader

    source: condition?"RedRectangle.qml":"BlueRectangle.qml"

【讨论】:

【参考方案2】:

稍微扩展@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")

【讨论】:

以上是关于如何在 QML 中编写条件导入语句?的主要内容,如果未能解决你的问题,请参考以下文章

导入 JavaScript 时如何在 QML 中使用绝对路径?

如何在 Robot Framework 中编写 if 语句的多个条件

如何在ionic html模板中编写条件语句

如何在 SQL Server 2008 R2 中的 select 语句中编写条件

如何有条件地禁用 QML 绑定到 C++ 后端?

如何测量 QML 文件中的导入时间?