QTreewidget显示XML C++完整代码
时间: 2023-07-10 15:25:30 浏览: 77
以下是一个简单的示例,使用QTreewidget显示XML:
```c++
#include <QXmlStreamReader>
#include <QTreeWidgetItem>
#include <QFile>
#include <QTreeWidget>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return -1;
QXmlStreamReader xmlReader(&file);
QTreeWidget* treeWidget = new QTreeWidget();
QTreeWidgetItem* currentItem = nullptr;
while (!xmlReader.atEnd())
{
xmlReader.readNext();
if (xmlReader.isStartElement())
{
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, xmlReader.name().toString());
if (currentItem)
currentItem->addChild(item);
else
treeWidget->addTopLevelItem(item);
currentItem = item;
QXmlStreamAttributes attributes = xmlReader.attributes();
for (const QXmlStreamAttribute& attribute : attributes)
{
QTreeWidgetItem* attributeItem = new QTreeWidgetItem();
attributeItem->setText(0, attribute.name().toString());
attributeItem->setText(1, attribute.value().toString());
item->addChild(attributeItem);
}
}
if (xmlReader.isEndElement())
currentItem = currentItem->parent();
}
treeWidget->show();
return app.exec();
}
```
这个示例会读取一个名为example.xml的XML文件,并将其显示在一个QTreewidget中。每个XML元素都是一个树形结构的节点,每个属性都是该元素的子节点。
阅读全文