接上一篇文章https://www.cnblogs.com/DreamDog/p/9213915.html

XML文档的读写

一个根节点,下面每一个子节点代表一个子程序,内容为子程序名字,图标路径,exe路径

  1. /*
  2. * 读取XML配置文档
  3. */
  4. static int count_flag = 0;
  5. void MainWindow::read_XML()
  6. {
  7. QFile file("./subroutine/config.xml"); //引用文件路径
  8. if(!file.open((QFile::ReadOnly | QFile::Text))) //只读文本方式打开
  9. {
  10. QMessageBox::information(NULL,"Title","OpenFile false"); //如果打开失败则提示
  11. }
  12. /*
  13. * 装在XML文件内容到内存
  14. */
  15. QDomDocument doc;
  16. doc.setContent(&file);
  17. file.close();
  18. QDomElement root = doc.documentElement();
  19. QDomNode node = root.firstChild();
  20. QString name = "asd";
  21. QString iconpath;
  22. QString exepath;
  23. while (!node.isNull())
  24. {
  25. QDomElement element = node.toElement();
  26. if(!element.isNull())
  27. {
  28. QDomNamedNodeMap list = element.attributes();
  29. for(int i = 0;i<list.count();i++)
  30. {
  31. if(list.item(i).nodeName() == "name")
  32. {
  33. name = list.item(i).nodeValue();
  34. }
  35. else if (list.item(i).nodeName() == "iconpath")
  36. {
  37. iconpath = list.item(i).nodeValue();
  38. }
  39. else if (list.item(i).nodeName() == "exepath")
  40. {
  41. exepath = list.item(i).nodeValue();
  42. }
  43. }
  44. }
  45. // QPushButton *button = new QPushButton(name, this);
  46. // button->setIcon(QIcon(iconpath));
  47. // button->show();
  48. // connect(button,&QPushButton::clicked,[=]()
  49. // {
  50. // QProcess *myProcess = new QProcess(this);
  51. // myProcess->startDetached(exepath);
  52. // });
  53.  
  54. MPushButton *button = new MPushButton(this);
  55. button->set_name(name);
  56. button->set_ICON(iconpath);
  57. button->show();
  58.  
  59. connect(button,&MPushButton::clicked,[=]()
  60. {
  61. QProcess *myProcess = new QProcess(this);
  62. myProcess->startDetached(exepath);
  63. });
  64. flowLayout->addWidget(button);
  65. node = node.nextSibling();
  66. count_flag++;
  67. if(count_flag-35>0)
  68. {
  69. showWidgt->setGeometry(0,0,ui->widget_main->width(),ui->widget_main->height()+100*((count_flag-35)/7+1));
  70. }
  71.  
  72. }
  73. }

 以上代码为读取XML部分,

 可以参考https://blog.csdn.net/z609932088/article/details/71694709

Qt 利用XML文档,写一个程序集合 二的更多相关文章

  1. Qt 利用XML文档,写一个程序集合 一

    接到领导需求安排,说公司未来的硬件设备会越来越多,与每个设备对应的设备检测和设置程序也会增多.导致软甲太多,不好掌控.所以希望做一个完整的软件,但是呢,每个子程序还得独立,应为每个用户购买的设备不是一 ...

  2. Qt 利用XML文档,写一个程序集合 四

    接上一篇https://www.cnblogs.com/DreamDog/p/9214067.html 启动外部程序 这里简单了,直接上代码吧 connect(button,&MPushBut ...

  3. Qt 利用XML文档,写一个程序集合 三

    接上一篇https://www.cnblogs.com/DreamDog/p/9214052.html 滚动区域实现, 滚动区域可以三成分层 第一层,显示内容 中间层,滚动层 第三层,爸爸层 把我们要 ...

  4. 【HTML/XML 10】XML文档中的Schema文件

    导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema.Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的 ...

  5. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  6. xml文档读取-SAX

    由于dom采用的是将xml文档加载入内存进行处理的方式,如果xml文档较大,则会导致加载时间过长,效率降低的情况,因此,sun公司在JAXP中又添加了对SAX的支持: SAX,全称Simple API ...

  7. Java高级特性 第15节 解析XML文档(3) - JDOM和DOM4J技术

    一.JDOM解析 特征: 1.仅使用具体类,而不使用接口. 2.API大量使用了Collections类. Jdom由6个包构成: Element类表示XML文档的元素 org.jdom: 解析xml ...

  8. XML文档处理

    1)CDATA部分用<![CDATA[和]]>来限定其界限,它们是字符数据的一种特殊形式,可用使用它们来囊括那些含有<.>,&之类字符的字符串,而不必将它们解释为标记例 ...

  9. java: (正则表达式,XML文档,DOM和DOM4J解析方法)

    常见的XML解析技术: 1.DOM(基于XML树结构,比较耗资源,适用于多次访问XML): 2.SAX(基于事件,消耗资源小,适用于数量较大的XML): 3.JDOM(比DOM更快,JDOM仅使用具体 ...

随机推荐

  1. php版本跟扩展模块版本不兼容问题

    安装redis扩展后查看时候出现了这样报错: [root@localhost phpredis-develop]# php -m | grep redisPHP Warning: PHP Startu ...

  2. Segmentation fault (core dumped) 错误的一种解决场景

    错误类型 Segmentation fault (core dumped) 产生原因 Segmentation fault 段错误. Core Dump 核心转储(是操作系统在进程收到某些信号而终止运 ...

  3. python - 流程控制基础习题

    #打印1 到100 的和** i = 0 s = 0 while i <100: i += 1 s += i print(s) print('1+2+,,100=',s) #打印字符A~Z fo ...

  4. TCP中的三次握手和四次挥手

    三次握手:目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息. 理论上跟通话一样: a: 你听的到吗?  b: 我能听到.只需要两次就可以了,但建立连接阶段不是双向即时通信的,且最终的目的 ...

  5. Linux各个文件及其含义

    树状目录结构: 以下是对这些目录的解释: /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像 ...

  6. MongoDB 简单上手

    MongoDB 是什么 MongoDB 是一种非关系型数据库(NoSQL). MongoDB中的术语解释 文档(document):形如 { name: "sue", <-- ...

  7. Mysql修改密码以及权限问题

    mysql修改密码小步骤 错误分析: 一开始是密码错误导致,先添加skip-grant-tables(这个配置无视权限的,添加直接回车登录即可),尽心修改密码,发现错误照旧 百度了一下,发现是mysq ...

  8. 读书笔记《PHP高级程序设计、模式、框架与测试》

    序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...

  9. C语言可变参数函数详解示例

    先看代码 printf(“hello,world!”);其参数个数为1个. printf(“a=%d,b=%s,c=%c”,a,b,c);其参数个数为4个. 如何编写可变参数函数呢?我们首先来看看pr ...

  10. STM32串口一直进中断

    调试过程中遇到了使用串口什么都没接却一直进中断,接串口线到电脑上测试又正常的问题. 网上有人说需要将USART的RX模式从输入浮空改成输入上拉,改后测试正常,问题解决. 分析可能是什么都不接时浮空模式 ...