config.h
#ifndef CONFIG_H
#define CONFIG_H
#include <QObject>
#include "tinyxml2.h"
#include <iostream>
using namespace tinyxml2;
using namespace std;
class config : public QObject
{
Q_OBJECT
private:
explicit config(QObject *parent = 0);
void openXml(const char *xmlFilePath);
~config();
public:
static config *instance();
const char* getCfgItem(const char* itemname);
private:
XMLDocument doc;
XMLElement *root;
signals:
public slots:
};
#endif // CONFIG_H
config.cpp
#include "config.h"
config::config(QObject *parent) : QObject(parent)
{
openXml("./config/cfg.xml");
}
config::~config()
{
}
config *config::instance()
{
static config cfg;
return &cfg;
}
void config::openXml(const char* xmlFilePath)
{
if(doc.LoadFile(xmlFilePath))
{
doc.PrintError();
return;
}
root=doc.RootElement();
}
const char* config::getCfgItem(const char *itemname)
{
XMLElement* item = root->FirstChildElement(itemname);
if(item)
{
return item->GetText();
}
string error=string(itemname)+string("is null");
return error.c_str();
}
使用示例:
void databaseCtrl::connectDatabase()
{
// db=QSqlDatabase::addDatabase("QMYSQL");
// db.setHostName(config::instance()->getCfgItem("database_ip"));
// db.setPort(atoi(config::instance()->getCfgItem("database_port")));
// db.setDatabaseName(config::instance()->getCfgItem("database_databaseName"));
// db.setUserName(config::instance()->getCfgItem("database_user"));
// db.setPassword(config::instance()->getCfgItem("database_password"));
// qdebug<< "drivers"<< QSqlDatabase::drivers();
···
}