我见过其他人使用" onSourceChanged:reload();"在XmlListModel中发出信号,但我找不到任何关于它的信息(并且它对我不起作用)。 xml文件快速更新(每秒1或2次)。 我也尝试使用自己的xml文件并手动编辑它,但没有成功。
如何更新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
ListView {
id: listView
anchors.fill: parent
spacing: 10
model: ICDModel2 {}
delegate: contactDelegate
highlight: highlightBar
highlightFollowsCurrentItem: false
focus: true
}
最后是委托(也在main.qml内)
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
}
}
}
}
答案 0 :(得分:0)
由于这个问题花了我相当长的时间来解决这个问题,原始的海报并没有提供他的解决方案,我将展示如何解决这个问题:
我在源代码中添加了一个随机属性,并使用计时器在给定的时间间隔内重新加载XmlListModel。
SELECT
groups.*,
employees.*,
-- all fields from reports
FROM
groups
INNER JOIN
employees
ON
employees.id = groups.employee_id
}
XmlListModel { id:xmlModel
// Insert Opportunity
Opportunity opt = new Opportunity(Name='Test',StageName='Prospect',
CloseDate=date.today(),BidType__c = 'Competitive',
Business_Line_BU__c = 'BL.619'
);
insert opt;
opt.PriceBook2 = customPB;
update opt;
。 。