38. QXmlStreamReader读取xml--Apple
2021-09-06 本文已影响0人
applecai
一,前言
27. Qtreeview导出xml--Apple的学习笔记关于xml我之前简单学习过,练习的是从treeview中读取二维数组,用Dom库写为xml。网上搜索后,发现有好多xml的处理方式,同时包括使用外部库。然后说dom适合小文件因为是一次写入内存的,QXmlStreamReader比较快,适合大文件,而且灵活。当然他们截图给我官网help上这样描述的,我为什么没想到先去查help呢~
二,需求
用QXmlStreamReader来读取xml文件到treeview显示。
三,遇到的问题
- treeview如何添加行。
答:item->insertChild(i,myChild);
- new一个index,保存到堆后,什么时候会销毁?
答:这个真的不清楚,估计是widget销毁的时候自动销毁。 - 如何自定义鼠标的图片?
答:利用setCursor可以传入QPixmap的方法。
QPixmap pix(":/res/img/edit.png");
QSize size(30,30);
pix = pix.scaled(size,Qt::KeepAspectRatio);
setCursor(QCursor(pix));
- xml内容应该如何设计?
可以看我之前blog的xml,原来的设计不适合归递处理。所以我重新设计了。
while(!reader->atEnd())
{
QXmlStreamReader::TokenType type=reader->readNext();
if(type==QXmlStreamReader::StartElement && reader->name().toString()=="RTE_type") //从RTE_type开始解析
ParseEntry(reader,treeview->invisibleRootItem()); //具体解析策略应用
}
<?xml version="1.0" encoding="UTF-8"?>
<RTEVFB>
<RTE_type type="SWCs">
<name term="name of APP module">MDL_AppleCai</name>
<name term="name of sensorActuator">MDL_HeatWater</name>
</RTE_type>
<RTE_type type="PORTs">
<name term="used to get info">rpSR_GetInfo</name>
<name>ppSR_SetDeviceCmd</name>
<name>rpSR_monitorWater</name>
<name>rpSR_GetDeviceCmd</name>
<name>ppSR_GetInfo</name>
<name>ppSR_monitorWater</name>
</RTE_type>
<RTE_type type="INTERFACEs">
<name term="for QM module">if_Done</name>
<name>if_GetInfo</name>
<name>if_SetDeviceCmd</name>
<name>if_monitorWater</name>
</RTE_type>
</RTEVFB>
四,效果
image.png五,小结
我就喜欢折腾学习新方法,就喜欢同样的事情用不同的方法。方法越多,备份方案越多,将来真要用的时候,处理问题的效率越高。这就是我的处事逻辑,哈哈~