MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの基礎 - INIファイルのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの基礎 - INIファイル
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == INIファイルは、シンプルな設定ファイル形式であり、多くのアプリケーションで使用されている。<br> Qtでは、<code>QSettings</code>クラスを使用してINIファイルを読み書きすることができる。<br> <br> <code>QSettings</code>クラスは、プラットフォームに依存しない方法で設定を保存・読み込みする機能を提供する。<br> INIファイル形式は、クロスプラットフォームで使用可能であり、人間が読みやすい形式である。<br> <br> INIファイルの基本構造は、セクションとキー・値のペアで構成されている。<br> セクションは角括弧<code>[]</code>で囲まれ、その下にキー・値のペアが続く。<br> <syntaxhighlight lang="ini"> [General] LastUser=JohnDoe AutoSave=true [Window] Width=800 Height=600 </syntaxhighlight> <br> QtでINIファイルを使用する場合の主なメリットは、使いやすさと柔軟性である。<br> <code>QSettings</code>クラスを使用することにより、設定の読み書きが簡単に行うことができる。<br> また、アプリケーションの設定を外部ファイルで管理できるため、設定の変更や共有が容易になる。<br> <br> INIファイルの操作には、値の読み取り、書き込み、削除等の基本的な操作がある。<br> <code>QSettings</code>クラスは、これらの操作を簡単に行うためのメソッドを提供している。<br> <br> ただし、INIファイルにはいくつかの制限もある。<br> 例えば、複雑なデータ構造の保存には適していない。<br> また、大量のデータを扱う場合は、パフォーマンスの面で他の形式 (例: データベース) の方が適している場合がある。<br> <br> INIファイルを使用する時は、セキュリティにも注意が必要である。<br> 特に、設定ファイルに機密情報を保存する場合は、適切な暗号化や権限設定を行うことが重要である。<br> <br><br> == INIファイルの書き込み == 以下の例では、ソフトウェアにおけるウインドウの状態を保存している。<br> <br> ウインドウの座標、縦横のサイズ、状態、最少幅、タイトル文字列をSetting.iniファイルに保存する。<br> もし、Settings.iniファイルが存在する場合は上書きする。<br> <br> <syntaxhighlight lang="c++"> void MainWindow::saveSetting() { QSettings settings("settings.ini", QSettings::IniFormat, this); settings.beginGroup("MainWindow"); settings.setValue("pos", pos()); if(!isMaximized()) { settings.setValue("size", size()); } settings.setValue("maximized", isMaximized()); settings.setValue("miniwid", minimumWidth()); settings.setValue("title", windowTitle()); settings.endGroup(); } </syntaxhighlight> <br> 以下の例では、ソフトウェア終了時に、ウインドウの幅と高さをINIファイルに保存している。<br> <syntaxhighlight lang="c++"> // mainwindow.cpp #include <QMessageBox> #include <QSettings> #include <QSize> #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ORG_NAME = "My Company"; APP_NAME = "My Tool"; QSettings settings(ORG_NAME, APP_NAME); int width = settings.value("Window / Width").toInt(); int height = settings.value("Window / Height").toInt(); this->resize(QSize(width, height)); } MainWindow::~MainWindow() { delete ui; } // ソフトウェアの終了処理はcloseEventをオーバーライドすることで実現できる void MainWindow::closeEvent(QCloseEvent *event) { int width = this->geometry().width(); int height = this->geometry().height(); QMessageBox::information(this, "Finish Timing", tr("window width : %1 \nwindow height : %2").arg(width).arg(height)); QSettings settings(ORG_NAME, APP_NAME); settings.setValue("Window / Width", width); settings.setValue("Window / Height", height); } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui {class MainWindow;} class MainWindow : public QMainWindow { Q_OBJECT private: const QString ORG_NAME; const QString APP_NAME; public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; protected: virtual void closeEvent(QCloseEvent *event); }; #endif // MAINWINDOW_H </syntaxhighlight> <br><br> == INIファイルの読み込み == 以下の例では、前回のウインドウの状態を復元している。<br> Setting.iniファイルから必要な情報を読み込み、画面の状態を変更する。<br> <br> Settings.iniファイルが存在しない場合またはpos等のキー値が無ければ何もしない。<br> <br> <syntaxhighlight lang="c++"> bool MainWindow::loadSetting() { QSettings settings("settings.ini", QSettings::IniFormat, this); settings.beginGroup("MainWindow"); if(settings.contains("pos")) { move(settings.value("pos", QPoint(50, 40)).toPoint()); } if(settings.contains("size")) { resize(settings.value("size", QSize(800, 720)).toSize()); } if(settings.value("maximized").toBool()) { setWindowState(windowState() | Qt::WindowMaximized); } if(settings.contains("miniwid")) { setMinimumWidth(settings.value("miniwid", 400).toInt()); } if(settings.contains("title")) { setWindowTitle(settings.value("title", "なし").toString()); } settings.endGroup(); } </syntaxhighlight> <br> 以下に、設定ファイル(Settings.ini)の内容を示す。<br> 左上位置(46, 15)、画面サイズ(800x600)、最大化(false)、最少幅(400)、画面のタイトルが"サンプル画面"の場合である。<br> [MainWindow] pos=@Point(46 15) size=@Size(800 600) maximized=false miniwid=400 title=\x30b5\x30f3\x30d7\x30eb\x753b\x9762 <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの基礎 - INIファイル
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse