QSettings如何读写配置文件
读函数:
QVariant value(const QString &key, const QVariant &defaultValue = QVariant())
第一个参数是键
第二个参数是值
写函数:
void setValue(const QString &key, const QVariant &value)
第一个参数是键
第二个参数是默认值,也就是说如果没有读到值,就返回该默认值,如填-1 ,就返回-1
QSettings *settings = new QSettings("./setting.ini",QSettings::IniFormat);
//写
settings->beginGroup("MAIN");
settings->setValue("title","Qt配置");
settings->endGroup();
settings->beginGroup("OTHER");
settings->setValue("width",666);
settings->endGroup();
//读
settings->beginGroup("MAIN");
QString title = settings->value("title","").toString();
qDebug()<<"title= "<<title; //输出至控制台
settings->endGroup();
settings->beginGroup("OTHER");
QString width = settings->value("width",-1).toString();
qDebug()<<"width= "<<width; //输出至控制台
settings->endGroup();
控制台输出的信息:
setting.ini文件里的内容
如果想保存所有窗口位置,以使下一次运行应用程序时能够恢复它们的值,那么可以使用QMainWindow的sayeState()和restoreState()函数:
保存在注册表里:
void MainWindow::writeSettings(){
QSettings settings ("Software Inc.", "QMainWindow APP");
settings.beginGroup("mainWindow");
settings.setValue("geometry", saveGeometry());
settings.setValue ("state", saveState());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings ("Software Inc.", "QMainWindow APP");
settings.beginGroup("mainWindow");
restoreGeometry(settings.value ("geometry").toByteArray());
restoreState(settings.value("state").toByteArray());
settings.endGroup();
}
也可以保存在ini文件里:
void MainWindow::writeSettings(){
QSettings settings ("QMainWindow_APP.ini");
settings.beginGroup("mainWindow");
settings.setValue("geometry", saveGeometry());
settings.setValue ("state", saveState());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings ("QMainWindow_APP.ini");
settings.beginGroup("mainWindow");
restoreGeometry(settings.value ("geometry").toByteArray());
restoreState(settings.value("state").toByteArray());
settings.endGroup();
}