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

XML文档的读写

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

/*
* 读取XML配置文档
*/
static int count_flag = 0;
void MainWindow::read_XML()
{
QFile file("./subroutine/config.xml"); //引用文件路径
if(!file.open((QFile::ReadOnly | QFile::Text))) //只读文本方式打开
{
QMessageBox::information(NULL,"Title","OpenFile false"); //如果打开失败则提示
}
/*
* 装在XML文件内容到内存
*/
QDomDocument doc;
doc.setContent(&file);
file.close();
QDomElement root = doc.documentElement();
QDomNode node = root.firstChild();
QString name = "asd";
QString iconpath;
QString exepath;
while (!node.isNull())
{
QDomElement element = node.toElement();
if(!element.isNull())
{
QDomNamedNodeMap list = element.attributes();
for(int i = 0;i<list.count();i++)
{
if(list.item(i).nodeName() == "name")
{
name = list.item(i).nodeValue();
}
else if (list.item(i).nodeName() == "iconpath")
{
iconpath = list.item(i).nodeValue();
}
else if (list.item(i).nodeName() == "exepath")
{
exepath = list.item(i).nodeValue();
}
}
}
// QPushButton *button = new QPushButton(name, this);
// button->setIcon(QIcon(iconpath));
// button->show();
// connect(button,&QPushButton::clicked,[=]()
// {
// QProcess *myProcess = new QProcess(this);
// myProcess->startDetached(exepath);
// }); MPushButton *button = new MPushButton(this);
button->set_name(name);
button->set_ICON(iconpath);
button->show(); connect(button,&MPushButton::clicked,[=]()
{
QProcess *myProcess = new QProcess(this);
myProcess->startDetached(exepath);
});
flowLayout->addWidget(button);
node = node.nextSibling();
count_flag++;
if(count_flag-35>0)
{
showWidgt->setGeometry(0,0,ui->widget_main->width(),ui->widget_main->height()+100*((count_flag-35)/7+1));
} }
}

 以上代码为读取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. ethereumjs/ethereumjs-vm-1-简介

    https://github.com/ethereumjs/ethereumjs-vm 其实这就是怎么自己使用该模块来生成一个类似geth客户端的以太坊虚拟机,然后进行各类区块链操作 SYNOPSIS ...

  2. Apollo2.5 CANBUS调试笔记(测试版)

    前言:CANBUS是Apollo需要根据你的底盘写代码的地方,感觉也是Apollo最难调试的部分.这部分首先要选好CAN卡,因为不是Apollo推荐的CAN卡,驱动程序和对应接口,可能都需要自己调整, ...

  3. PDF压缩,在线压缩免费

    https://smallpdf.com/ 一个很牛逼的网站 https://zh.wikihow.com/ https://zh.wikihow.com/%E9%A6%96%E9%A1%B5

  4. docker参数

    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, - ...

  5. PyTorch Softmax

    PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. Th ...

  6. 使用supervior 监控 elasticsearch 进程

    elasticsearch引擎在使用中可能会出现后台守护进程挂掉的情况,需要手动启动来恢复正常. 这时则可以引用supervior进程管理工具来监控elasticsearch进程状态,实现进程挂掉自动 ...

  7. POJ3074 Sudoku(lowbit优化搜索)

    In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...

  8. #leetcode刷题之路22-括号生成

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为:[ "((()))", "(()())&q ...

  9. mysql截取字段并插入到新的字段中

    例如:在产品表product表中字段content值为["10"],然后在产品表中新建一个字段product_id,提出字段content的值10,如何实现呢? 解: update ...

  10. CentOS6编译安装gcc高版本

    编译安装gcc高版本 因CentOS中gcc版本仅有4.4,故编译安装gcc高版本. 安装依赖库(如果你已安装过gcc低版本,可跳过这步) yum install glibc-static libst ...