当前位置: 代码迷 >> QT开发 >> QML 的 Model View有关问题
  详细解决方案

QML 的 Model View有关问题

热度:299   发布时间:2016-04-25 04:09:23.0
QML 的 Model View问题
Page:ListModel.qml
ListModel{
property string tempString_Model  :  ""
if(tempString_Model === “abc”){
//DoSomething
}
ListElement{

}
}

Page:ListViewQML.qml
Item{
     id: listViewQML
     property string tempString_View  :  ""
     Rectangle{

     }
     ListView{
     model: ListModel{tempString_Model : tempString_View}
     delegate:Item{
  Rectangle{

          }
  Text{

  }
      }
     }
}

Page:DoQML.qml
DoQML{
     x: 0
     y: 0
     anchors.fill: parent
     MouseArea{
        anchors.fill: parent
        onClick{
     //Call listViewQML
     // The listViewQML property string(tempString_View) to Assignment
        }
     }
}


如上面代码所示,有3个QML,一个ListModel,一个ListView,一个Item,现在业务如下:
DoQML.qml中有一个onClick事件,当点击时调出ListViewQML.qml,并且给ListViewQML.qml中的变量赋值,请问可以实现吗!?

------解决方案--------------------
楼主的QML代码问题太多了!
1. ListModel.qml的命名就有问题,这和QML标准的ListModel重名了
2. if(tempString_Model === “abc”) ... 这段代码显然有问题,在这个位置上是不能嵌入JS脚本的,至少应该放在onTempString_ModelChanged()这个槽函数里
3. ……
问题太多了,我基本看不懂你的意思,还是先回去自己认真的想一遍,或者再巩固一下QML的基础
------解决方案--------------------
还是不对呀,onCompleted时执行testTemp,而此时tempString_Model的值必然是""
------解决方案--------------------
你DoQML.qml的第一句

DoQML {
}

这个DoQML是个什么?
------解决方案--------------------
那DoQML.qml的对象是在哪里创建的?你现在只有一个qml文件,但没有发现真实的对象在哪里。以此类推,ListViewQML的对象是在哪里创建的?搞明白这两个问题,才有可能解决你的相互调用的问题。

另外,我感觉你现在的思路还非常不清晰,这应该是对QML了解的还不够。得赶紧补一下QML的基础知识,看下面这个网址

http://qt-project.org/doc/qt-4.8/qtquick.html
  相关解决方案