使用 QML 添加具有条件的类
adding a class with condition using qml
我有一个项目,我想在其中添加一个类,这个依赖于一个变量
import "class1"
import "class2"
Item { id: myID
property variant myVar: 0;
anchors.fill: parent;
function update() {
switch(myID.myVar)
{
case 0:
class1 {
anchors.fill: parent;
}
break;
case 1:
class2 {
anchors.fill: parent;
}
break;
}
}
}
实际上这是一个错误的代码,有什么办法可以做到这一点吗?
谢谢。
QML 和 JavaScript 互网,但你尝试使用的是 JavaScript 上下文中的 QML 类实例化语法 - 它永远不会那样工作。加载 QML 文件后,其中定义的所有类实例都已实例化。
您需要定义两个组件,并使用加载器动态创建其中一个组件。所以,像下面这样。我还没有测试过它,但我希望它应该会引导你朝着正确的方向前进。
import "class1"
import "class2"
Item {
id: myItem
property variant myVar: 0;
anchors.fill: parent;
Component {
id: compClass1
class1 {
anchors.fill: myItem;
}
}
Component {
id: compClass12
class2 {
anchors.fill: myItem;
}
}
Loader { id: myLoader }
function update() {
switch(myID.myVar) {
case 0:
myLoader.sourceComponent = compClass1;
break;
}
case 1:
myLoader.sourceComponent = compClass2;
break;
}
}
}
相关文章:
- 如何使用 soong 命名空间来有条件地编译模块
- 有条件地将默认参数传递给函数(使用"?"运算符)
- 根据模板类型有条件地删除变量
- 有条件地选择带有 decltype() 和三元运算符的类型
- 如何使用 SFINAE 在方法调用中有条件地定义变量?
- 有条件的打印和计数在 std::map 上有限制
- 如何在 c++ 中有条件地包含标头?
- 如何仅在Qt是用ltcg构建时才有条件地启用ltcg?
- 如何在Visual Studio 2019中有条件地编译c++源文件
- C++可以有条件地向下转换类指针吗
- 使用 SFINAE 有条件地解析分配器成员
- 有条件地删除宏
- 有条件地包含C++标准库
- 如何有条件地将元素添加到 std::array - C++11
- 是否根据编译器版本有条件地包含源文件
- 有条件地启用类C++构造函数
- 我可以有条件地使用多个参数吗?
- 有条件地使用 Boost Python 添加模块
- 有什么东西阻止std::optional::value_or()有条件地不例外吗?
- 无法使用三元运算符有条件地分配"istream &"?