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