How to Use QSettings: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Cleanup)
(Syntax highlight fix)
 
(7 intermediate revisions by 4 users not shown)
Line 6: Line 6:
{{DocLink|QSettings}} class provides platform-independent application settings. The following example shows how to save and load settings to an '''ini''' file. The instance of '''QSettings''' will take care of writing and reading the settings from the '''ini''' file.
{{DocLink|QSettings}} class provides platform-independent application settings. The following example shows how to save and load settings to an '''ini''' file. The instance of '''QSettings''' will take care of writing and reading the settings from the '''ini''' file.


== Save Settings ==
Method {{DocLink|qsettings|setValue}} should be used to save a value of a key (aka the name of the setting).


Method [http://doc.qt.io/qt-5/qsettings.html#setValue setValue] should be used to save a value of a key (aka the name of the setting).
The value of a setting can be obtained using the method {{DocLink|qsettings|value}}.
 
== Load Settings ==
 
The value of a setting can be obtained using method [http://doc.qt.io/qt-5/qsettings.html#value value].


== Example ==
== Example ==


=== mainwindow.h ===
=== mainwindow.h ===
 
<syntaxhighlight lang="c++">
<code>
#ifndef MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#define MAINWINDOW_H
Line 29: Line 24:


namespace Ui {
namespace Ui {
class MainWindow;
  class MainWindow;
}
}


Line 37: Line 32:
public:
public:


explicit MainWindow(QWidget '''parent = 0);
explicit MainWindow(QWidget *parent = 0);
  virtual ~MainWindow();
  virtual ~MainWindow();


Line 56: Line 51:
  QString m_sSettingsFile;
  QString m_sSettingsFile;


  QLabel''' m_pLabel;
  QLabel* m_pLabel;


QLineEdit* m_pEdit;
QLineEdit* m_pEdit;


QPushButton* m_pButton;
QPushButton* m_pButton;
};
};


#endif // MAINWINDOW_H
#endif // MAINWINDOW_H
 
</syntaxhighlight>
</code>
 
=== mainwindow.cpp ===
=== mainwindow.cpp ===
 
<syntaxhighlight lang="c++">
<code>
#include "mainwindow.h"
#include "mainwindow.h"
#include <QCoreApplication>
#include <QCoreApplication>
#include <QSettings>
#include <QSettings>
#include <QApplication>
#include <QApplication>
Line 85: Line 75:
  initGui();
  initGui();


m_sSettingsFile = QApplication::applicationDirPath().left(1) + ":/demosettings.ini";
m_sSettingsFile = QApplication::applicationDirPath() + "/demosettings.ini";
  loadSettings();
  loadSettings();


if (m_pButton)
if (m_pButton)
  {
  {
connect(m_pButton, SIGNAL (released()),this, SLOT (handleButton()));
  connect(m_pButton, SIGNAL (released()),this, SLOT (handleButton()));
  }
  }
}
}
Line 110: Line 100:
  if (m_pLabel)
  if (m_pLabel)
  {
  {
m_pLabel->setText(sText);
  m_pLabel->setText(sText);
  }
  }
}
}
Line 119: Line 109:
  QString sText = (m_pEdit) ? m_pEdit->text() : "";
  QString sText = (m_pEdit) ? m_pEdit->text() : "";
  settings.setValue("text", sText);
  settings.setValue("text", sText);
if (m_pLabel)
{
m_pLabel->setText(sText);
}
}
}


Line 134: Line 120:


}
}
</code>
</syntaxhighlight>


=== main.cpp ===
=== main.cpp ===


<code>
<syntaxhighlight lang="c++">
#include "mainwindow.h"
#include "mainwindow.h"


Line 147: Line 133:
  QApplication app(argc, argv);
  QApplication app(argc, argv);


MainWindow mainWindow;
MainWindow mainWindow;
  mainWindow.showMaximized();
  mainWindow.showMaximized();
  return app.exec();
  return app.exec();
}
}
</syntaxhighlight>

Latest revision as of 15:32, 2 May 2023

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

QSettings class provides platform-independent application settings. The following example shows how to save and load settings to an ini file. The instance of QSettings will take care of writing and reading the settings from the ini file.

Method setValue should be used to save a value of a key (aka the name of the setting).

The value of a setting can be obtained using the method value.

Example

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

namespace Ui {
  class MainWindow;
}

class MainWindow : public QMainWindow
{
 Q_OBJECT
public:

 explicit MainWindow(QWidget *parent = 0);
 virtual ~MainWindow();

private:

 void initGui();

 void loadSettings();

 void saveSettings();

private slots:

 void handleButton();

private:

 QString m_sSettingsFile;

 QLabel* m_pLabel;

 QLineEdit* m_pEdit;

 QPushButton* m_pButton;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QCoreApplication>
#include <QSettings>
#include <QApplication>

MainWindow::MainWindow(QWidget *parent)
 : QMainWindow(parent),
 m_pLabel(NULL),
 m_pEdit(NULL),
 m_pButton(NULL)
{
 initGui();

 m_sSettingsFile = QApplication::applicationDirPath() + "/demosettings.ini";
 loadSettings();

if (m_pButton)
 {
  connect(m_pButton, SIGNAL (released()),this, SLOT (handleButton()));
 }
}

void MainWindow::initGui()
{
 m_pLabel = new QLabel("", this);
 m_pLabel->setGeometry(0,0, 200,40);
 m_pEdit = new QLineEdit("", this);
 m_pEdit->setGeometry(0,40, 200,40);
 m_pButton = new QPushButton("OK", this);
 m_pButton->setGeometry(0,80, 200,40);
}

void MainWindow::loadSettings()
{
 QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
 QString sText = settings.value("text", "").toString();
 if (m_pLabel)
 {
  m_pLabel->setText(sText);
 }
}

void MainWindow::saveSettings()
{
 QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
 QString sText = (m_pEdit) ? m_pEdit->text() : "";
 settings.setValue("text", sText);
}

void MainWindow::handleButton()
{
 saveSettings();
}

MainWindow::~MainWindow()
{

}

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);

 MainWindow mainWindow;
 mainWindow.showMaximized();
 return app.exec();
}