Qt | 配置文件QSettings的使用方法
1、简介
配置文件常见的作用是启动软件是保留上次软件退出是的界面状态,如果不保留配置,且软件界面的内容又比较多,重启软件后界面恢复默认,那么每次打开界面都需要重新设置,这样比较麻烦,所以可以使用配置文件进行保存,软件启动的时候自动加载。
2、QSettings类的使用
Qt提供了QSetting类对配置进行管理,可以显示的指定为ini格式的配置文件,如果不显示的指定,则默认为:
- windows系统,在注册表中(注册表位置:计算机\HKEY_CURRENT_USER\Software\软件名称)
- maxos系统,在xml文件中
- unix系统,在ini文件中
QSettings提供了静态函数对配置进行读取和设置。
使用vaule读取,value第二个参数可用来指定默认值:
QSettings("config.ini", QSettings::IniFormat).value("baudrate", 9600).toString();
使用setValue设置:
QSettings("config.ini", QSettings::IniFormat).setValue("baudrate", ui->baudrateComboBox->currentText());
除此之外还可以利用beginGroup和endGroup进行分组,这样对配置文件进行管理比较规范;使用beginReadArray、beginWriteArray、endArray对数组进行读写。文章来源:https://www.toymoban.com/news/detail-639059.html
3、使用示例
对配置文件见得保存和写入比较规范的做法是覆写窗体的closeEvent和showEvent函数。文章来源地址https://www.toymoban.com/news/detail-639059.html
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->baudrateComboBox->setEditable(true);
ui->baudrateComboBox->addItems({"9600", "115200"});
ui->databitsComboBox->addItems({"8", "7"});
ui->stopbitsComboBox->addItems({"1", "2"});
ui->parityComboBox->addItems({tr("无校验"), tr("奇校验"), tr("偶校验")});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showEvent(QShowEvent *e)
{
QWidget::showEvent(e);
ui->baudrateComboBox->setCurrentText(QSettings("config.ini", QSettings::IniFormat).value("baudrate", 9600).toString());
ui->databitsComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("databits", 0).toInt());
ui->stopbitsComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("stopbits", 0).toInt());
ui->parityComboBox->setCurrentIndex(QSettings("config.ini", QSettings::IniFormat).value("parity", 0).toInt());
// 恢复上次关闭软件时的窗口大小
QSettings settings("config.ini", QSettings::IniFormat);
settings.beginGroup("mainwindow");
resize(settings.value("size").toSize());
move(settings.value("pos", pos()).toPoint());
settings.endGroup();
}
void MainWindow::closeEvent(QCloseEvent *e)
{
QSettings("config.ini", QSettings::IniFormat).setValue("baudrate", ui->baudrateComboBox->currentText());
QSettings("config.ini", QSettings::IniFormat).setValue("databits", ui->databitsComboBox->currentIndex());
QSettings("config.ini", QSettings::IniFormat).setValue("stopbits", ui->stopbitsComboBox->currentIndex());
QSettings("config.ini", QSettings::IniFormat).setValue("parity", ui->parityComboBox->currentIndex());
// 记录软件关闭前的窗口大小和位置
QSettings settings("config.ini", QSettings::IniFormat);
settings.beginGroup("mainwindow");
settings.setValue("size", size());
settings.setValue("pos", pos());
settings.endGroup();
QWidget::closeEvent(e);
}
到了这里,关于Qt | 配置文件QSetting的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!