1
我見過其他人使用「onSourceChanged:reload();」信號在XmlListModel中,但我找不到任何有關它的信息(並且它不適合我)。 xml文件更新快(每秒1或2次)。 我也嘗試過用我自己的xml文件並手動編輯它,但沒有成功。如何在間隔或數據更改時從XmlListModel中刷新數據?
如何更新ListView/XmlListModel,以便我的應用程序始終顯示正確的數據? (這是在間隔時間或來源改變時)。
我XmlListModel文件(ICDModel.qml)
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
XmlListModel {
source: "http://192.168.1.103:89/FunctionGenerator/FuncGen1.xml"
query: "/Component/Signals/Signal"
onSourceChanged: reload();
XmlRole { name: "Name"; query: "@Name/string()" }
XmlRole { name: "Description"; query: "@Description/string()" }
XmlRole { name: "Value"; query: "@Value/string()"; isKey: true }
}
內main.qml
ListView {
id: listView
anchors.fill: parent
spacing: 10
model: ICDModel2 {}
delegate: contactDelegate
highlight: highlightBar
highlightFollowsCurrentItem: false
focus: true
}
最後委託(也在裏面main.qml)ListView控件
Component {
id: contactDelegate
Item {
id: wrapper
height: 40; width: parent.width
Column {
Text { text: '<b>Name:</b> ' + Name }
Text { text: '<b>Description:</b> ' + Description }
Text { text: '<b>Value:</b> ' + Value }
}
states: State {
name: "Current"
when: wrapper.ListView.isCurrentItem
PropertyChanges { target: wrapper; x: 20 }
}
transitions: Transition {
NumberAnimation { properties: "x"; duration: 200 }
}
MouseArea {
id: mouse_area1
anchors.fill: parent
hoverEnabled: false
onClicked: {
wrapper.ListView.view.currentIndex = index
}
}
}
}
你在哪裏改變源代碼?我只看到一個靜態源,所以「onSourceChanged」信號不會被調用!? – Xander
你是對的@Xander。不能相信我沒有意識到「onSourceChanged」只在實際的源URL更改時被調用,而不是從源收集的值。 (愚蠢的錯誤)。一位朋友找到了解決方案,所以我應該以某種方式解決這個問題。謝謝! – user2750342
你可以回答你自己的問題,並接受它作爲答案(如果別人有類似的問題)。 :) – Xander