在应用程序开发过程中,用户对程序有一些需求,要求记住一些参数,比如窗口大小,比如配置的ip地址等。这些设置一般都是存在系统里面的,比如windows一般都写在系统注册表或者写INI文件中,那么按照一般的标准来说,许多应用程序是用INI文件来实现的。而Qsettings就是提供了一种方便的方法来存储和恢复应用程序的settings。
两个问题:
- 如何将setting写入到注册表中?
- 如何将setting写入到本地ini文件中?
问题1:
在Qt中,设置ini文件并写入到注册表中,一般要先声明一些参数,比如公司名称,比如应用程序名称。如下代码,初始化设置:
#include "mainwindow.h"
#include <QSettings>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//配置参数
QCoreApplication::setOrganizationName("QQQQQ");
QCoreApplication::setOrganizationDomain("qqqqq.com");
QCoreApplication::setApplicationName("WWWWW");
QCoreApplication::setApplicationVersion("1.0.0");
//写设置值
QSettings setting;
setting.setValue("ip","127.0.0.1");
setting.setValue("port","3306");
setting.setValue("name","cch");
setting.setValue("password","cch");
MainWindow w;
w.show();
return a.exec();
}
运行后,可以在注册表中看到已设置的参数值,如下图:
在程序中获取设置值时:
QSettings setting;
QString ip = setting.value("ip").toString();
QString port = setting.value("port").toString();
QString name = setting.value("name").toString();
QString password = setting.value("password").toString();
问题2:
当不写配置文件到注册表中时,就不需要设置上面的参数了,如下代码:
#include "mainwindow.h"
#include <QSettings>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//配置参数
// QCoreApplication::setOrganizationName("QQQQQ");
// QCoreApplication::setOrganizationDomain("qqqqq.com");
// QCoreApplication::setApplicationName("WWWWW");
// QCoreApplication::setApplicationVersion("1.0.0");
//写设置值
QSettings *setting = new QSettings("QWSet.ini", QSettings::IniFormat);
setting->setValue("/MySql/ip","127.0.0.1");
setting->setValue("/MySql/port","3306");
setting->setValue("/MySql/name","cch");
setting->setValue("/MySql/password","cch");
delete setting;
MainWindow w;
w.show();
return a.exec();
}
运行结果如下:
当设置参数不加"/MySql/"的话,默认为"General",如下图:
获取配置参数值同上。
版权声明:本文为object__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。