MEMO
設定ファイルを作成して読み書きします。保存場所としてAppDataにベンダ名フォルダとアプリ名フォルダを作ります。
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QCoreApplication>
#include <QStandardPaths>
#include <QSettings>
#include <QDir>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// AppData/Roamingフォルダのパスを取得
QStringList appDataPathList = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
QString appDataPath;
for (int i = 0; i < appDataPathList.count(); i++) {
const QString &path = appDataPathList.at(i);
if (path.contains("Roaming")) {
appDataPath = path;
break;
}
}
// AppData/Roamingフォルダが見つからない場合は、AppData/Localフォルダのパスを取得
if (appDataPath.isEmpty()) {
appDataPathList = QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation);
for (int i = 0; i < appDataPathList.count(); i++) {
const QString &path = appDataPathList.at(i);
if (path.contains("Local")) {
appDataPath = path;
break;
}
}
}
if (!appDataPath.isEmpty()) {
// アプリ名でフォルダ作成
QString appName = QCoreApplication::applicationName(); // ベンダ名
QString appFolder = QDir(appDataPath).filePath(appName); // アプリ名
QDir().mkpath(appFolder);
qDebug() << appFolder;
// INIファイル作成
QString iniFilePath = QDir(appFolder).filePath("setting.ini");
QSettings settings(iniFilePath, QSettings::IniFormat);
// 設定値書き込み
settings.beginGroup("PROJECT");
settings.setValue("path", "C:/directory/subdirectory");
settings.setValue("file", "file.xml");
settings.endGroup();
// 値の読み込み
settings.beginGroup("PROJECT");
QString pathValue = settings.value("path").toString();
QString fileValue = settings.value("file").toString();
settings.endGroup();
qDebug() << "path:" << pathValue;
qDebug() << "file:" << fileValue;
}
}