使用qml添加带有条件的类

时间:2014-02-13 21:11:35

标签: javascript c++ qt 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;
    }
}

}

实际上这是一个错误的代码,无论如何都可以这样做?

谢谢。

1 个答案:

答案 0 :(得分:1)

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