How to Use QSettings/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Don't #include the module prefix)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Developing with Qt::General]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
[[Category:Developing with Qt::General]]
[[Category:HowTo]]
[[Category:Snippets]]
[[Category:Tutorial]]


[toc align_right=&quot;yes&amp;quot; depth=&quot;3&amp;quot;]


'''Български''' [[How_to_Use_QSettings|English]]
'''Български''' [[How_to_Use_QSettings|English]]
Line 7: Line 11:
= Как се използва QSettings =
= Как се използва QSettings =


Класът &quot;QSettings&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qsettings.html осигурява платформено-независими настройки за приложението. Приложеният пример показва как да се записват и зареждат настройки в '''ini''' файл. Инстанцията на '''QSettings''' ще се погрижи за записа и четенето на настройките в '''ini''' файла. Примерът е тестван на Nokia устройство с ОС Symbian^3.
Класът [http://doc.qt.io/qt-5.0/qtcore/qsettings.html QSettings] осигурява платформено-независими настройки за приложението. Приложеният пример показва как да се записват и зареждат настройки в '''ini''' файл. Инстанцията на '''QSettings''' ще се погрижи за записа и четенето на настройките в '''ini''' файла. Примерът е тестван на Nokia устройство с ОС Symbian^3.


== Запис на настройки ==
== Запис на настройки ==


Методът &quot;setValue&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qsettings.html#setValue трябва да бъде използван, за да се запамени стойност към ключ (т.е. към името на насройката).
Методът [http://doc.qt.io/qt-5.0/qtcore/qsettings.html#setValue setValue] трябва да бъде използван, за да се запамени стойност към ключ (т.е. към името на насройката).


== Зареждане на настройки ==
== Зареждане на настройки ==


Стойността на дадена настройка може да бъде взета чрез метода &quot;value&amp;quot;:http://doc.qt.io/qt-5.0/qtcore/qsettings.html#value.
Стойността на дадена настройка може да бъде взета чрез метода [http://doc.qt.io/qt-5.0/qtcore/qsettings.html#value value].


== Пример ==
== Пример ==
Line 21: Line 25:
=== mainwindow.h ===
=== mainwindow.h ===


<code><br />#ifndef MAINWINDOW_H<br />#define MAINWINDOW_H
<code>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
 
namespace Ui {
class MainWindow;
}


#include &lt;QtGui/QMainWindow&amp;gt;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:


#include &lt;QLabel&amp;gt;<br />#include &lt;QLineEdit&amp;gt;<br />#include &lt;QPushButton&amp;gt;
explicit MainWindow(QWidget '''parent = 0);
virtual ~MainWindow();


namespace Ui {<br /> class MainWindow;<br />}
private:


class MainWindow : public QMainWindow<br />{<br /> Q_OBJECT<br />public:
void initGui();


explicit MainWindow(QWidget '''parent = 0);<br /> virtual ~MainWindow();
void loadSettings();
<br />private:
 
<br /> void initGui();
void saveSettings();
<br /> void loadSettings();
 
<br /> void saveSettings();
private slots:
<br />private slots:
 
<br /> void handleButton();
void handleButton();
<br />private:
 
<br /> QString m_sSettingsFile;
private:
<br /> QLabel''' m_pLabel;
 
QString m_sSettingsFile;
 
QLabel''' m_pLabel;


QLineEdit* m_pEdit;
QLineEdit* m_pEdit;


QPushButton* m_pButton;<br />};
QPushButton* m_pButton;
};


#endif // MAINWINDOW_H
#endif // MAINWINDOW_H
Line 52: Line 76:
=== mainwindow.cpp ===
=== mainwindow.cpp ===


<code><br />#include &quot;mainwindow.h&amp;quot;
<code>
#include "mainwindow.h"


#include &lt;QtCore/QCoreApplication&amp;gt;
#include <QCoreApplication>


#include &lt;QSettings&amp;gt;<br />#include &lt;QApplication&amp;gt;
#include <QSettings>
#include <QApplication>


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


m_sSettingsFile = QApplication::applicationDirPath().left(1) + &quot;:/demosettings.ini&amp;quot;;<br /> loadSettings();
m_sSettingsFile = QApplication::applicationDirPath().left(1) + ":/demosettings.ini";
loadSettings();


if (m_pButton)<br /> {<br /> connect(m_pButton, SIGNAL (released()),this, SLOT (handleButton()));<br /> }<br />}
if (m_pButton)
{
connect(m_pButton, SIGNAL (released()),this, SLOT (handleButton()));
}
}


void MainWindow::initGui()<br />{<br /> m_pLabel = new QLabel(&quot;&quot;, this);<br /> m_pLabel-&gt;setGeometry(0,0, 200,40);<br /> m_pEdit = new QLineEdit(&quot;&quot;, this);<br /> m_pEdit-&gt;setGeometry(0,40, 200,40);<br /> m_pButton = new QPushButton(&quot;OK&amp;quot;, this);<br /> m_pButton-&gt;setGeometry(0,80, 200,40);<br />}
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()<br />{<br /> QSettings settings(m_sSettingsFile, QSettings::NativeFormat);<br /> QString sText = settings.value(&quot;text&amp;quot;, &quot;&quot;).toString();<br /> if (m_pLabel)<br /> {<br /> m_pLabel-&gt;setText(sText);<br /> }<br />}
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()<br />{<br /> QSettings settings(m_sSettingsFile, QSettings::NativeFormat);<br /> QString sText = (m_pEdit) ? m_pEdit-&gt;text() : &quot;&quot;;<br /> settings.setValue(&quot;text&amp;quot;, sText);<br /> if (m_pLabel)<br /> {<br /> m_pLabel-&gt;setText(sText);<br /> }<br />}
void MainWindow::saveSettings()
{
QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
QString sText = (m_pEdit) ? m_pEdit->text() : "";
settings.setValue("text", sText);
if (m_pLabel)
{
m_pLabel->setText(sText);
}
}


void MainWindow::handleButton()<br />{<br /> saveSettings();<br />}
void MainWindow::handleButton()
{
saveSettings();
}


MainWindow::~MainWindow()<br />{
MainWindow::~MainWindow()
{


}<br /></code>
}
</code>


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


<code><br />#include &quot;mainwindow.h&amp;quot;
<code>
#include "mainwindow.h"


#include &lt;QtGui/QApplication&amp;gt;
#include <QApplication>


int main(int argc, char *argv[])<br />{<br /> QApplication app(argc, argv);
int main(int argc, char *argv[])
{
QApplication app(argc, argv);


MainWindow mainWindow;<br /> mainWindow.showMaximized();<br /> return app.exec&amp;amp;#40;&amp;#41;;<br />}
MainWindow mainWindow;
mainWindow.showMaximized();
return app.exec();
}

Latest revision as of 13:26, 27 April 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.


Български English

Как се използва QSettings

Класът QSettings осигурява платформено-независими настройки за приложението. Приложеният пример показва как да се записват и зареждат настройки в ini файл. Инстанцията на QSettings ще се погрижи за записа и четенето на настройките в ini файла. Примерът е тестван на Nokia устройство с ОС Symbian^3.

Запис на настройки

Методът setValue трябва да бъде използван, за да се запамени стойност към ключ (т.е. към името на насройката).

Зареждане на настройки

Стойността на дадена настройка може да бъде взета чрез метода value.

Пример

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().left(1) + ":/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);
 if (m_pLabel)
 {
 m_pLabel->setText(sText);
 }
}

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

MainWindow::~MainWindow()
{

}

main.cpp

  1. include "mainwindow.h"
  1. include <QApplication>

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

QApplication app(argc, argv);

MainWindow mainWindow;

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

}