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)
根据您想要实现的目标,可能的解决方法是使用Loader.但它不会导入模块,它只允许动态选择您将使用的QML组件.
Loader
{
source: condition?"RedRectangle.qml":"BlueRectangle.qml"
}
Run Code Online (Sandbox Code Playgroud)
稍微扩展一下@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)
| 归档时间: |
|
| 查看次数: |
1826 次 |
| 最近记录: |