使用 QML 添加具有条件的类

adding a class with condition using qml

本文关键字:有条件 QML 添加 使用      更新时间:2023-10-16

我有一个项目,我想在其中添加一个类,这个依赖于一个变量

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;
    }
  }
}