Qt笔记(3)操作XML一

本文介绍如何使用 Qt 中的 QDomDocument 类来解析 XML 文件,并通过 QPushButton 的点击事件触发读取操作,最终在 TextEdit 控件中展示读取到的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文件用 QDomDocument 读取XML文件

XML文件路径:D:\Test\qt\xml\test.xml 内容

 

 
 
  1. <?xml version="1.0" encoding="GBK" ?>   
  2. <Root>   
  3.     <Test Attr="属性">金财税</Test>   
  4. </Root>   

1、新建一个Qt工程,命名为xml。

2、在xml.pro文件加入一句 Qt += xml

3、在界面上放一个PushButton和一个TextEdit

main.cpp

 

 
 
  1. #include <QtGui/QApplication> 
  2. #include "mainwindow.h" 
  3.  
  4. //为了正常显示中文,手动加入以下引用 
  5. #include <QTextCodec> 
  6.  
  7. int main(int argc, char *argv[]) 
  8.     QApplication a(argc, argv); 
  9.  
  10.     //手动加入以下代码,保证中文可以正常显示 
  11.     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); 
  12.     QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); 
  13.     QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); 
  14.  
  15.     MainWindow w; 
  16.     w.show(); 
  17.      
  18.     return a.exec(); 

在PushButton的clicked()槽中写读取xml的代码

mainwindow.cpp

 
 
  1. #include "mainwindow.h" 
  2. #include "ui_mainwindow.h" 
  3.  
  4. //以下是手工添加的引用 
  5. #include <QDomDocument> 
  6. #include <QDomElement> 
  7. #include <QDomAttr> 
  8. #include <QFile> 
  9.  
  10. MainWindow::MainWindow(QWidget *parent) : 
  11.     QMainWindow(parent), 
  12.     ui(new Ui::MainWindow) 
  13.     ui->setupUi(this); 
  14.  
  15. MainWindow::~MainWindow() 
  16.     delete ui; 
  17.  
  18. void MainWindow::on_pushButton_clicked() 
  19.     QFile file("D:/Test/qt/xml/test.xml"); 
  20.  
  21.     if(!file.open(QFile::ReadOnly | QFile::Text)) 
  22.     { 
  23.         ui->textEdit->append(tr("XML文件打开失败")); 
  24.     } 
  25.  
  26.     QDomDocument doc; 
  27.  
  28.     QString errStr; 
  29.     int errLine, errCol; 
  30.     // setContent 是将指定的内容指定给QDomDocument 解析,第一参数可以是QByteArray或者是文件名等。 
  31.     if(!doc.setContent(&file, false, &errStr, &errLine, &errCol)) 
  32.     { 
  33.         ui->textEdit->append(tr("指定XML内容失败 原因: ") + errStr); 
  34.     } 
  35.     file.close(); 
  36.  
  37.     //根节点 
  38.     QDomElement root = doc.documentElement(); 
  39.     ui->textEdit->append(root.nodeName());///输出根节点名称 输出 Root 
  40.  
  41.     QDomElement child = root.firstChildElement(); 
  42.  
  43.     ui->textEdit->append(child.nodeName());//输出内容: Test 
  44.     ui->textEdit->append(child.text());//child.nodeValue()无值,原因不明 输出内容: 金财税 
  45.     ui->textEdit->append(child.attributeNode("Attr").nodeName());//输出内容: Attr 
  46.     ui->textEdit->append(child.attributeNode("Attr").nodeValue());//输出内容: 属性 

运行结果:

 

 

本文出自 “自由自我” 博客,请务必保留此出处http://hhuayuan.blog.51cto.com/1630327/898419

内容概要:本文详细介绍了基于FPGA的144输出通道可切换电压源系统的设计与实现,涵盖系统总体架构、FPGA硬件设计、上位机软件设计以及系统集成方案。系统由上位机控制软件(PC端)、FPGA控制核心和高压输出模块(144通道)三部分组成。FPGA硬件设计部分详细描述了Verilog代码实现,包括PWM生成模块、UART通信模块和温度监控模块。硬件设计说明中提及了FPGA选型、PWM生成方式、通信接口、高压输出模块和保护电路的设计要点。上位机软件采用Python编写,实现了设备连接、命令发送、序列控制等功能,并提供了个图形用户界面(GUI)用于方便的操作和配置。 适合人群:具备定硬件设计和编程基础的电子工程师、FPGA开发者及科研人员。 使用场景及目标:①适用于需要精确控制多通道电压输出的实验环境或工业应用场景;②帮助用户理解和掌握FPGA在复杂控制系统中的应用,包括PWM控制、UART通信及多通道信号处理;③为研究人员提供个可扩展的平台,用于测试和验证不同的电压源控制算法和策略。 阅读建议:由于涉及硬件和软件两方面的内容,建议读者先熟悉FPGA基础知识和Verilog语言,同时具备定的Python编程经验。在阅读过程中,应结合硬件电路图和代码注释,逐步理解系统的各个组成部分及其相互关系。此外,实际动手搭建和调试该系统将有助于加深对整个设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值