|
|
| 388行目: |
388行目: |
| } | | } |
| </syntaxhighlight> | | </syntaxhighlight> |
| <br><br>
| |
|
| |
| == INIファイル ==
| |
| ==== INIファイルの書き込み ====
| |
| 以下の例では、ソフトウェアにおけるウインドウの状態を保存している。<br>
| |
| <br>
| |
| ウインドウの座標、縦横のサイズ、状態、最少幅、タイトル文字列をSetting.iniファイルに保存する。<br>
| |
| もし、Settings.iniファイルが存在する場合は上書きする。<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>
| |
| ==== INIファイルの読み込み ====
| |
| 以下の例では、前回のウインドウの状態を復元している。<br>
| |
| Setting.iniファイルから必要な情報を読み込み、画面の状態を変更する。<br>
| |
| <br>
| |
| Settings.iniファイルが存在しない場合またはpos等のキー値が無ければ何もしない。<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> | | <br><br> |
|
| |
|