服务端源码下载地址为:
http://download.csdn.net/detail/qq78442761/9768662
关于什么是XML文件,在此不在啰嗦。
不知道的博友请百度补脑。
本程序的xml在如下地方:
xml内容如下:
在本程序中,此xml存储了外部程序路径,用于打开外部程序的。如下图所示:
单击了运行MYSQL后就会运行外部程序如下图所示:
另外一个外部程序不做演示。
我们现在来讲解一个简单的,如何进行外部程序。
我们在MainWindow.里面看到关于这个按钮的函数,如下
//运行外部MYSQL程序
void MainWindow::RunMYSQLProcess()
{
QString cmd=QString(qPrintable(ProXML->GetProcessDir("MYSQL")));
m_Process.start(cmd,QStringList()<<"");
ui->CMDplainTextEdit->appendPlainText(CurrTime::currentDateTime()+"打开外部MYSQL程序");
}
我们现在来定位m_Process。
我们这mainwindow.h里面可以看见一个私有的成员变量。
QProcess m_Process; //打开外部程序
这个QProcess是在头文件
#include <QProcess>有这个start函数,就可以对外部程序进行激活。
下面是读取xml。
在这个项目里面,有一个
docxml.h和docxml.cpp用于读取xml
最上面的那个链接可以下载全套源码,IDE为 Qt Creator 5.7
docxml.h
#ifndef DOCXML_H
#define DOCXML_H
#include <QtXml>
#include <QDomDocument>
#include <QFile>
#include <QIODevice>
#include <QDomNode>
#include <QDebug>
#include <QMessageBox>
#include <QString>
class DOCXML
{
public:
DOCXML();
QString GetProcessDir(QString ProName); //获取程序路径
private:
QDomDocument *doc; //QDomDocument类对象,代表一个XML文档
QFile *file; //建立指向in.xml文件的QFile对象
QDomNode *Node; //XML结点
};
#endif // DOCXML_H
#include "docxml.h"
DOCXML::DOCXML()
{
file=new QFile("in.xml");
if(!file->open(QIODevice::ReadOnly))
{
QMessageBox::critical(NULL,"错误","in.xml打开失败",QMessageBox::Cancel);
}
else
{
//将文件读入doc中
doc=new QDomDocument();
if(!doc->setContent(file))
{
QMessageBox::critical(NULL,"错误","in.xml读取",QMessageBox::Cancel);
}
else
file->close();
}
}
QString DOCXML::GetProcessDir(QString ProName)
{
QDomElement docElem = doc->documentElement(); //返回根元素
QDomNode n = docElem.firstChild(); //返回根节点的第一个子节点
//如果节点不为空
while(!n.isNull())
{
if (n.isElement()) //如果节点是元素
{
QDomElement e = n.toElement();
// 获得元素e的子节点的列表
QDomNodeList list = e.childNodes();
//获取程序名
QDomNode node = list.at(0);
if(ProName==qPrintable(node.toElement().text()))
{
node = list.at(1);
//qDebug() << qPrintable(node.toElement().text());;
return qPrintable(node.toElement().text());
}
}
n = n.nextSibling(); //下一个兄弟节点
}
return "fail";
}
这就是读取XML文件及运行外部程序