Pfeffer
2019-11-19 04:20
采纳率: 53%
浏览 575

qt 很简单的一段代码 利用Qsetting 完成,但是在读取配置文件的时候,出问题

#include "widget.h"
#include "ui_widget.h"
#include<QTime>
#include<iostream>
#include<QString>
#include<QSettings>
#include<QDebug>
#include<QFile>
#include <QMessageBox>
#include <QDir>
#include<QFileDialog>
#define  CONFIG_FILE "config.ini"

using namespace std;







Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);



        QSettings *configIniRead = new QSettings("config.ini", QSettings::IniFormat); //在堆里面开辟了一块区域,然后把地址赋给栈中的某个地址
        dir_src = configIniRead->value("main/bak_src").toString();// value 是Qsetting里面的公开方法
        cout << "当前目录为:" <<dir_src.toLocal8Bit().data();

        dir_dest = configIniRead->value("main/bak_dest").toString(); // 配置文件里面有目标地址
        gpg_key = configIniRead->value("main/gpg_key").toString();
        exclude_from = configIniRead->value("exclude/exclude").toString();
      delete configIniRead; // 与初始化的对象成对出现,会造成内存泄漏



    ui->lineEdit->setText(dir_src);

}

Widget::~Widget()
{
    delete ui;
}


上面是cpp里面的

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QString dir_src;
    QString dir_dest;
    QString dir_restore;
    QString gpg_key;
    QString arc_user;
    QString arc_path;
    QString exclude_from;

};
#endif // WIDGET_H

上面是h文件里面的

[exclude]
exclude=--exclude *.iso --exclude .gvfs/** --exclude .thumbnails/** --exclude .trash/** --exclude .Trash/** --exclude *-gitsvn/** --exclude *-cvs/** --exclude *-svn/** --exclude *-git/** --exclude *-sf/** --exclude *.vc --exclude *.tc --exclude .cache/** --exclude .ccache/** --exclude ./Downloads/** --exclude ./.wine/** --exclude ./Documents/Dropbox/**

[main]
arc_path=bak_lg
arc_user=testuser
bak_dest=/home/hu/backup
bak_src=/home/hu/retore
gpg_key=xujing113221@hotmail.com
last_time=1572976195

上面是配置文件

我在读取配置文件下面做了一个输出,但是就是没有任何输出,我之后在后面加了字符串,发现有了输出,说明是配置文件没有被读出来

于是我改了配置文件的权限是 777,但是还是没有输出

最后我实在受不了,就重新建立一个项目尝试了一下,还是一点反应都没有

配置文件所在目录 就是h文件和cpp文件所在的目录

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qtchen_1988 2019-11-19 10:42
    已采纳

    你把config.ini文件拷贝到编译生成的文件夹的根目录(比如,build-xxx-Desktop_Qt_5_x_x_MinGW_32bit-Debug)

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2019-11-19 09:25

    QSettings *configIniRead = new QSettings("config.ini", QSettings::IniFormat);
    写绝对路径试试看,是不是路径不对造成文件没有找到

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题