XmlListModel有没有办法不显示XmlRole为空的项?
我想使用以下XmlListModelXmlListModel有没有办法不显示XmlRole为空的项?,xml,qt,qml,Xml,Qt,Qml,我想使用以下XmlListModel XmlListModel { xml: "<feed>" +" <entry><title>Bob</title></entry>" +" <entry><title></title></entry>" +"</feed>" query: "/feed/entry"
XmlListModel {
xml: "<feed>"
+" <entry><title>Bob</title></entry>"
+" <entry><title></title></entry>"
+"</feed>"
query: "/feed/entry"
XmlRole { name: "title"; query: "title/string()" }
}
XmlListModel{
xml:“
+“鲍勃”
+" "
+""
查询:“/feed/entry”
XmlRole{name:“title”;查询:“title/string()”}
}
以及不显示标题为空的条目
当然,XML来自我不拥有的远程源
我没有发现关于这种可能性的信息
有什么方法可以做到这一点吗?的任务只是从XML中获取项目,因此过滤必须是一个不同的过程。对于这种情况,您可以使用(C++)或(QML),在这种情况下,我将显示第二种方法:
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.XmlListModel 2.14
import QtQml.Models 2.14
ApplicationWindow {
width: 400
height: 300
visible: true
ListView {
id: listView
anchors.fill: parent
model: delegateModel
}
DelegateModel {
id: delegateModel
model: xmlmodel
delegate: Text {
id: name
text: qsTr("title: ") + title
}
items.onChanged: update()
groups: DelegateModelGroup {
id: visibleItems
name: "visible"
includeByDefault: false
}
filterOnGroup: "visible"
function update() {
if (items.count > 0)
items.setGroups(0, items.count, "items");
var visible = [];
for (var i = 0; i < items.count; ++i) {
var item = items.get(i);
// filter items
if (item.model.title !== "") {
visible.push(item);
}
}
for (i = 0; i < visible.length; ++i) {
item = visible[i];
item.inVisible = true;
if (item.visibleIndex !== i)
visibleItems.move(item.visibleIndex, i, 1);
}
}
}
XmlListModel {
id: xmlmodel
xml: "<feed>"
+" <entry><title>Bob</title></entry>"
+" <entry><title></title></entry>"
+"</feed>"
query: "/feed/entry"
XmlRole { name: "title"; query: "title/string()" }
}
}
导入QtQuick 2.14
导入QtQuick.Controls 2.14
导入QtQuick.XmlListModel 2.14
导入qtl.Models 2.14
应用程序窗口{
宽度:400
身高:300
可见:正确
列表视图{
id:listView
锚定。填充:父级
模型:委派模型
}
委托模型{
id:delegateModel
模型:xmlmodel
代表:文本{
id:姓名
正文:qsTr(“标题:”)+标题
}
items.onChanged:update()
组:DelegateModelGroup{
id:可见项目
名称:“可见”
includeByDefault:false
}
过滤器组:“可见”
函数更新(){
如果(items.count>0)
items.setGroups(0,items.count,“items”);
可见var=[];
对于(变量i=0;iXmlListModel
的query
属性使用XPath,您可以在这里进行一些过滤
拥有查询:“/feed/entry[title!=''”
将满足您的需求