QTreeView显示XML C++
时间: 2023-07-11 09:23:30 浏览: 103
在C++中,要在QTreeView中显示XML数据,您需要使用QStandardItemModel类。您可以使用Qt的QXmlStreamReader类从XML文件中读取数据,然后将其转换为QStandardItemModel。以下是一个简单的例子,可以帮助您开始:
```c++
#include <QFile>
#include <QXmlStreamReader>
#include <QStandardItemModel>
#include <QStandardItem>
// 读取XML文件
QFile file("example.xml");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QXmlStreamReader reader(&file);
// 创建QStandardItemModel
QStandardItemModel* model = new QStandardItemModel();
model->setHorizontalHeaderLabels({"Name", "Value"});
// 遍历XML数据并添加到model中
void add_items(QStandardItem* parent_item, QXmlStreamReader& reader) {
while (!reader.atEnd()) {
if (reader.isStartElement()) {
QStandardItem* item = new QStandardItem(reader.name().toString());
parent_item->appendRow({item, new QStandardItem(reader.readElementText())});
add_items(item, reader);
} else if (reader.isEndElement()) {
reader.readNext();
return;
} else {
reader.readNext();
}
}
}
while (!reader.atEnd()) {
if (reader.isStartElement()) {
add_items(model->invisibleRootItem(), reader);
} else {
reader.readNext();
}
}
// 在QTreeView中显示model
QTreeView* tree_view = new QTreeView();
tree_view->setModel(model);
tree_view->expandAll();
```
在这个例子中,我们使用Qt的QXmlStreamReader类从XML文件中读取数据。我们遍历XML数据,并将其添加到QStandardItemModel中。在QTreeView中,我们设置了model并展开了所有的节点。
阅读全文