Qt 生成ini配置文件 保存和读取数据

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));
}

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值