多语言展示
当前在线:457今日阅读:172今日分享:19

如何将tree widget中选中的Item写入XML文件

今天有网友问我如何将tree widget中选中的Item写入XML文件,小编在网上查了些资料,再根据个人的经验总结。希望能帮助到大家。
工具/原料
1

电脑

2

软件

方法/步骤
2

XML 是可扩展标记语言(Extensible Markup Language)的缩写。XML 文件由内容和标记组成,通过以标记包围内容的方式将大部分内容包含在元素中。Qt 中提供了多种读取XML文件的方法,这里简单的记录一下用 QDomDocument 读取的步骤。为什么使用QDomDocument 呢,因为XML 本身就是一以树状结构组织数据的,而DOM 也是将数据组织为树状结构,最适合直观地展示XML数据。

3

我们说过,XML 类似一种元语言,基于 XML 可以定义出很多新语言,比如 SVG(Scalable Vector Graphics)和 MathML(Mathematical Markup Language)。SVG 是一种用于矢量绘图的描述性语言,Qt 专门提供了 QtSVG 对其进行解释;MathML 则是用于描述数学公式的语言,Qt Solutions 里面有一个 QtMmlWidget 模块专门对其进行解释。另外一面,针对 XML 的通用处理,Qt4 提供了 QtXml 模块;针对 XML 文档的 Schema 验证以及 XPath、XQuery 和 XSLT,Qt4 和 Qt5 则提供了 QtXmlPatterns 模块。Qt 提供了三种读取 XML 文档的方法:QXmlStreamReader:一种快速的基于流的方式访问良格式 XML 文档,特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个,这是不允许的);

4

如果xml有多层,那么可以递归的去读取。我写了小程序将xml 的的数据读入到一个树型列表控件中。下面是核心的代码:[cpp] view plain copy#ifndef DIALOG_H  #define DIALOG_H  #include   #include     namespace Ui {  class Dialog;  }  class QTreeWidgetItem;  class Dialog : public QDialog  {      Q_OBJECT    public:      explicit Dialog(QWidget *parent = 0);      void listDom(QDomElement& docElem, QTreeWidgetItem* pItem);      void openXML(QString fileName);      ~Dialog();    private:      Ui::Dialog *ui;  private slots:      void openFile();  };

注意事项
1

有常识的去操作

2

不要急于求成

推荐信息