【Qt】iniファイル読む
todo
- iniファイルがあったら読む
- カレントディレクトリにiniを置いた
- ファイル名は"Pika.ini"
iniファイルの中身は下記のようにしてます。
# Pika.ini(カレントディレクトリにある)
[POKEMON1]
PIKACHU = 1
[POKEMON1] ... セクション
PIKACHU ... キー(パラメータ)
カレントディレクトリのパスを取得
QDir::currentPath();でカレントディレクトリを取得します。
iniファイルの名前を合成して、
C:カレントディレクトリ/Pika.ini を取得します。
QString path = QDir::currentPath();
path += "/Pika.ini";
qDebug("%s",qPrintable(path));
pikaNum = 0;
if(existPika(path)){
readPika(path);
}
pikaNumはクラス変数 int PikaNumです。
PIKACHUキーで取得した値を入れます。
もし読めない場合は0としたいので、4行目で初期値0を入れました。
5行目で、iniファイルが存在しているか確認しています。
6行目は、存在していたらiniファイルを読んで、キーの値を入れます。
iniファイルがない場合は何もしません。
iniファイル有無
if(existPika(path)){
関数の中身
bool Pika::existPika(QString path)
{
QFile file(path);
if(file.exists()){
return true;
}
return false;
}
QFile型にして、ファイルがあったらtrue
ファイルがなかったらfalseを返す関数
iniファイルを読む
iniファイルは、他のファイルのように読めると思うのですが、せっかく便利そうなクラスがあるのでこれ(QSettings)を使います。
readPika(path);
関数の中身
void Pika::readPika(QString path)
{
QSettings settings(path, QSettings::IniFormat);
settings.beginGroup("POKEMON1");
pikaNum = settings.value("PIKACHU").toInt();
settings.endGroup();
qDebug("num=%d",pikaNum);
}
beginGroupでセクションを指定
読み終わったらendGroup()
他のセクションのキーを読みたい場合は、これの繰り返し
settings.value()はQVariant型なのでintに変換してあげる必要がありました。
無事、アプリケーション出力画面で
num=1
と出力されました。
インクルード
#include <QDir>
#include <QFile>
#include <QSettings>
QSettings Class | Qt Core 5.11
じゃあの