QML:ListElement: cannot use script for property value

文章目录

背景

项目中经常用到mvc 或mvd ,尤其在qml中经常有如下场景:
一个listview,一个delegete 和 一个 model,但是有时候model会遇到model的属性,会是动态属性,即需要从外部获取的。
比如 :

property var url1 : myobject.getUrl1()
property var url2 : myobject.getUrl2()
ListModel {
    
    
        id: tidMode
		ListElement {
    
     name: qsTr("历史记录"); source:  url1 }
		ListElement {
    
     name: qsTr("c收藏夹"); source:  url2 }
		...
		}

其中 ListElement的元素 url是通过外部来动态获取的,此时,qml 就会报错ListElement: cannot use script for property value

如何解决呢?

可通过js方法来创建model即可

property var url1 : myobject.getUrl1()
property var url2 : myobject.getUrl2()
ListModel {
    
    
        id: tidMode
		//ListElement { name: qsTr("历史记录"); source:  url1 }
		//ListElement { name: qsTr("c收藏夹"); source:  url2 }
		//...
        Component.onCompleted: {
    
    
            tidMode.append({
    
    name: qsTr("历史记录"); source:  url1});
            tidMode.append({
    
     name: qsTr("c收藏夹"); source:  url2});
        }
}

猜你喜欢

转载自blog.csdn.net/u011942101/article/details/124219566
今日推荐