2

qml主页面如下:

Page{

   id: mainPage

   EmbeddedPage{  // this is the embedded page
   }

   DropDown{
       id: dropDown

       Option{
          text: "1"
          value: text
       }
       Option{
          text: "2"
          value: text
       }
       onSelectedOptionChanged: {
           updateEmbPage(); 
       }
   }

   function updateEmbPage(){
       var page = embPage.createObject();
       page.valueNo = dropDown.selectedValue;
   }
   attachedObjects: [
       ComponentDefinition{
          id: embPage
          source: "asset:///EmbeddedPage.qml"   
       } 
   ]
}

EmbeddedPage 的 qml 如下:

Container{
   property int valueNo

   Label{
      text: valueNo
   } 
}

EmbeddedPage现在,我希望根据在中选择的选项更改标签文本,dropDown而我的方法不起作用。所以,请给我一个解决方案。谢谢。

4

2 回答 2

1

您的问题可能与 QML 中定义的类型安全系统有关(请参阅此处的详细信息)

您正试图将一个variant值(即参见此处selectedValue的DropDown 定义)影响到一个整数属性。这就是失败的地方。valueNo

我建议您通过以下方式更改EmbeddedPage代码:

Container{
   property var valueNo

   Label{
      text: valueNo
   } 
}

也许字符串类型可以工作(未经测试,但看起来很合理,因为可以将变体转换回字符串属性)

于 2013-09-19T10:09:56.133 回答
0

尝试这个

       Page{

   id: mainPage

   EmbeddedPage{  // this is the embedded page
   id:mypage
   }
   DropDown{
       id: dropDown

       Option{
          text: "1"
          value: text
       }
       Option{
          text: "2"
          value: text
       }
       onSelectedOptionChanged: {
           updateEmbPage(); 
       }
   }

   function updateEmbPage(){

       mypage.valueNo = dropDown.selectedValue;
   }
   attachedObjects: [
       ComponentDefinition{
          id: embPage
          source: "asset:///EmbeddedPage.qml"   
       } 
   ]
}

EmbeddedPage 的 qml 如下:

    Container{
   property int valueNo

   Label{
      text: valueNo
   } 
}
于 2013-09-23T09:52:38.307 回答