16,212
社区成员
发帖
与我相关
我的任务
分享
#ifndef CONFIGMANAGER_H
#define CONFIGMANAGER_H
#include <QVariant>
#include <QSettings>
#include "qmetatype.h"
#define REGIST_CLS_TYPE(type) qRegisterMetaTypeStreamOperators<##type##>();
class ConfigManager
{
public:
ConfigManager(const QString& path);
~ConfigManager();
public:
void initConfig();
QString getFilePath();
void setFilePath(const QString& path);
QVariant getValue(const QString& key);
void setValue(const QString& key, const QVariant& value);
void start(const QString& path);
void stop();
//void registClsType(const QString& type);
private:
QString filePath;
QSettings* settings;
};
#endif // CONFIGMANAGER_H
#include "configmanager.h"
ConfigManager::ConfigManager(const QString& path)
{
start(path);
}
ConfigManager::~ConfigManager()
{
stop();
}
void ConfigManager::initConfig()
{
if(NULL == settings)
settings = new QSettings(filePath,QSettings::IniFormat,0);
}
QString ConfigManager::getFilePath()
{
return filePath;
}
void ConfigManager::setFilePath(const QString &path)
{
filePath = path;
}
QVariant ConfigManager::getValue(const QString &key)
{
if(NULL == settings)
return NULL;
return settings->value(key);
}
void ConfigManager::setValue(const QString &key, const QVariant &value)
{
if(NULL == settings)
return;
settings->setValue(key,value);
}
void ConfigManager::start(const QString& path)
{
filePath = path;
initConfig();
}
void ConfigManager::stop()
{
if(NULL != settings)
delete settings;
}
/*void ConfigManager::registClsType(const QString &type)
{
REGIST_CLS_TYPE(type);
}*/
Player obj;
TopItem item00;
item00.name = "kaixin00000000";
item00.type = 3000;
obj.firstName = "AK";
obj.lastName = "47";
obj.number = 80;
obj.item = item00;
ConfigManager manager("D:\\TEST.ini");
qRegisterMetaTypeStreamOperators<Player>();
qRegisterMetaTypeStreamOperators<TopItem>();
//REGIST_CLS_TYPE(Player); #define REGIST_CLS_TYPE(type) qRegisterMetaTypeStreamOperators<##type##>();
//REGIST_CLS_TYPE(TopItem);这个宏有问题 好像是那个<> 我该怎么改
manager.setValue("aaa",obj);//这句有问题在调用中obj的值为什么传不过去 费解
class Player
{
public:
int number;
QString firstName;
QString lastName;
TopItem item;
Player(){
}
Player(const Player& play)
{
number = play.number;
firstName = play.firstName;
lastName = play.lastName;
item = play.item;
}
operator QVariant() const
{
return QVariant::fromValue(*this);
}
};
Q_DECLARE_METATYPE(Player);
class TopItem
{
public:
TopItem();
TopItem(const TopItem& item);
operator QVariant() const;
public:
QString name;
int type;
};
Q_DECLARE_METATYPE(TopItem);
QDataStream& operator<<(QDataStream& out, const TopItem& item);
QDataStream& operator>>(QDataStream& in, TopItem& item);
#endif // TOPITEM_H