ui界面图
修改project1、2、3的数值,点击保存按钮
点击默认,project1,2,3恢复为默认参数
点击加载,选择刚才保存的ini文件,读取project1,2,3的参数
所保存的ini配置文件
Qt编写过程
1.ui界面
三个Label,三个LineEdit,三个PushButton控件
ObjectName分别命名为
label_1, label_2, label_3;
lineEdit_1, lineEdit_2, lineEdit_3;
save_pushButton_1, load_pushButton_2, default_pushButton_3;
2.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
3 widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtCore/QCoreApplication>
#include <QSettings>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
QSettings *settings;
private slots:
void on_save_pushButton_1_clicked();
void on_load_pushButton_2_clicked();
void on_default_pushButton_3_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
4. main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
5. widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDir>
#include <QDebug>
#include <QDateTime>
#include <QTextCodec>
#include <QMessageBox>
#include <QFileDialog>
#define PROJECT_1 1
#define PROJECT_2 2
#define PROJECT_3 3
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 给ui图上了三个lineEdit设置默认值
ui->lineEdit_1->setText(QString::number(PROJECT_1));
ui->lineEdit_1->setAlignment(Qt::AlignHCenter);
ui->lineEdit_2->setText(QString::number(PROJECT_2));
ui->lineEdit_2->setAlignment(Qt::AlignHCenter);
ui->lineEdit_3->setText(QString::number(PROJECT_3));
ui->lineEdit_3->setAlignment(Qt::AlignHCenter);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_save_pushButton_1_clicked()
{
// 获取当前Qt程序的路径
QString dir_str = QDir::currentPath();
// 文件夹命名为inifile
dir_str += "/inifile";
// 定义Qdir对象
QDir dir;
// 检查目录是否存在,若不存在则新建
if(!dir.exists(dir_str))
{
// 新建inifile文件夹
dir.mkpath(dir_str);
}
// 定义文件格式
const QString suffix = ".ini";
// 获取当前系统时间,并存储在一个QString对象上
QString createTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH-mm-ss");
// 在inifile文件夹中新建一个ini文件,已当前时间命名
settings = new QSettings(dir_str + "/" + createTime + suffix, QSettings::IniFormat);
// 以键值对的形式写入数据
settings->setValue("Project/project1", ui->lineEdit_1->text());
settings->setValue("Project/project2", ui->lineEdit_2->text());
settings->setValue("Project/project3", ui->lineEdit_3->text());
delete settings;
// 尝试打开刚刚创建的ini文件
QFile file(dir_str + "/" + createTime + suffix);
if(file.exists()) // 打开成功的提示
{
QMessageBox::information(this, tr("提示 Tips"), tr("保存成功!Saving succeeded!"));
}
else // 打开失败的提示
{
QMessageBox::information(this, tr("提示 Tips"), tr("保存失败!Saving failed!"));
}
}
void Widget::on_load_pushButton_2_clicked()
{
// 生成打开文件对话框,选择inifile文件夹中的ini文件进行读取
QString s = QFileDialog::getOpenFileName(this, "Open", "./inifile", "(*.ini)");
//读取ini配置文件
QSettings * myini = new QSettings(s, QSettings::IniFormat);
// 根据读取结果,给ui图上了三个lineEdit赋值
ui->lineEdit_1->setText(myini->value("Project/project1").toString());
ui->lineEdit_2->setText(myini->value("Project/project2").toString());
ui->lineEdit_3->setText(myini->value("Project/project3").toString());
delete myini;
}
void Widget::on_default_pushButton_3_clicked()
{
// 给ui图上了三个lineEdit设置默认值
ui->lineEdit_1->setText(QString::number(PROJECT_1));
ui->lineEdit_2->setText(QString::number(PROJECT_2));
ui->lineEdit_3->setText(QString::number(PROJECT_3));
}