您的位置:首页 > 编程语言 > Qt开发

QSetting配置文件的使用

2018-04-03 17:15 281 查看
1.在工程构架中,我们经常需要接触一些动态会变化的信息,比如所要链接数据库的信息,所要接收发送信息的服务器的信息,甚至是自定义的一些字符串。如果都将这个写入代码,显然不是好的方法。于是,我们将这些可能会变的信息写入一个配置文件,程序在运行的时候动态的读取,降低工程耦合度。以我自己写的一个测试程序为例子:
#define AppConfig "MyAppConfig.ini"
#define AppLog "MyAppLog.log"
#define PLUGIN_DIR  "MyPlugins"

class MyApp :  public QApplication
{
Q_OBJECT
public:
static MyApp *getInstance()
{
return qobject_cast<MyApp *>(qApp);
}
public:
MyApp(int& argc, char **argv, int = ApplicationFlags);
~MyApp();
private:
Ui::MyProductionClass ui;
public:
enum MyAppState
{
CREATED = 0,    //starting state.
UPDATING,       //程序更新中
UPDATED,        //程序更新完成
LOADING,        //加载中
STARTING,       //启动中
OPERATING,      //执行中
LOGGING_OUT,    //登出
QUITING,        //退出
};
public:
QStackedLayout* m_StackedLayout;
//主窗口
MyAppMainWindow* m_MainWnd;
//登陆界面
MyAppLogin* m_Login;
//程序启动画面类
QSplashScreen* m_AppSplash;
//主窗口里面的中心控件
CentralWidget *       m_central_widget;
//////////////////////////////////////////
char* _application_dir;//当前应用程序的目录
QTimer* m_pTimer_check_update;
std::string _local_ip;   //本地IPv4地址
QReadWriteLock          _lock;//读写锁
static QFile *          m_pFileLog;//file for log 
bool     m_isAppStateChanged;
MyAppState m_AppState;
QString _plugins_dir;
QByteArray  _msgsvr_url;
QByteArray  _msgsvr_username;
QByteArray  _msgsvr_passwd;
QByteArray  _client_addr;     
QByteArray  _last_login_name;//上次登陆名
QByteArray  _last_login_pwd;//上次登陆密码
QByteArray  _user_name;//用户名
QTimer*      checkStateTimer;
QByteArray  m_FirstAnswer;//读取配置文件测试用例
QByteArray  m_SecondAnswer;//读取配置文件测试用例
QByteArray  m_LastLoginAnswer;//读取配置文件测试用例
public:
void achieveLocalIp();//获取本地IPv4地址
bool StartApp();
void CreateLogFile();
bool read_config();
void load_local_libraries(QString app_dir);
bool MyApp::loadLibrary(QString file_path, QString *error_msg);
static void messageHandle(QtMsgType type, const char *msg);
bool notify(QObject *obj, QEvent *e);//重写事件通知
QSettings* m_Config;
};

#endif // MYPRODUCTION_H
然后在实现文件中:
一般一个Qt应用程序一个app,所以我们将App设置为单例模式;
m_Config=new QSettings(QApplication::applicationDirPath() + "\\" + AppConfig, QSettings::IniFormat, NULL);



这样就将配置文件内容写入我们的m_Config里面去了;
然后在其他模块需要使用的时候,就可以直接读取了,比如我们要读取保存的password,123456,就按照图示方式写入和读取,比如在读取我的数据库模块里面:
 QSettings*   cfg=MyApp::getInstance()->m_Config;
m_CurrentDataBase.setDatabaseName(QString("DRIVER={SQL SERVER};" 
"SERVER=%1;" //服务器名称 
"DATABASE=%2;"//数据库名 
"UID=%3;"           //登录名 
"PWD=%4;"           //密码 
).arg(cfg->value("ContentTest/DataBaseAddress", "").toString()) //数据库地址
.arg(cfg->value("ContentTest/DataBaseName", "").toString()) //数据库名称
.arg(cfg->value("ContentTest/DataBaseUser", "").toString()) //登陆的用户名
.arg(cfg->value("ContentTest/DataBasePassword", "").toString()) //登陆的密码
); 

这样就根据配置文件的信息连接上对应的数据库了。
简单方便实用!!!So easy!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt QSettings