QSettings的使用

QSettings类是Qt中跨平台的配置信息类,在Application关闭时可以保存必要的数据信息;在程序启动时读取数据,恢复用户设置。在此,做一个小例子来测试其基本使用。

QSettingsDialog即录入用户数据,并且处理数据。

ui文件:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>QSettingsDialog</class>
 <widget class="QDialog" name="QSettingsDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>315</width>
    <height>111</height>
   </rect>
  </property>
  <property name="sizePolicy">
   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="contextMenuPolicy">
   <enum>Qt::NoContextMenu</enum>
  </property>
  <property name="windowTitle">
   <string>QSettingsDialog</string>
  </property>
  <widget class="QWidget" name="layoutWidget">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>10</y>
     <width>294</width>
     <height>85</height>
    </rect>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <layout class="QGridLayout" name="gridLayout_2">
        <item row="0" column="0">
         <widget class="QLabel" name="mLabelName">
          <property name="text">
           <string>Name</string>
          </property>
         </widget>
        </item>
        <item row="0" column="1" colspan="2">
         <widget class="QLineEdit" name="mEditName"/>
        </item>
        <item row="1" column="0" colspan="2">
         <widget class="QLabel" name="mLabelPhoneNum">
          <property name="text">
           <string>PhoneNumber</string>
          </property>
         </widget>
        </item>
        <item row="1" column="2">
         <widget class="QLineEdit" name="mEditPhoneNum"/>
        </item>
       </layout>
      </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>13</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QPushButton" name="mBtnReadData">
        <property name="text">
         <string>ReadData</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QPushButton" name="mBtnClear">
        <property name="text">
         <string>Clear</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QPushButton" name="mBtnExit">
        <property name="text">
         <string>Exit</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

具体显示如下:

qsettingsdialog.h文件:

#ifndef QSETTINGSDIALOG_H
#define QSETTINGSDIALOG_H

#include <QDialog>

namespace Ui {
class QSettingsDialog;
}

class QSettingsDialog : public QDialog
{
    Q_OBJECT

public:
    explicit QSettingsDialog(QWidget *parent = 0);
    ~QSettingsDialog();

private:
    //创建信号槽链接
    void setupConnect();
    void clearData();
    //将数据写入QSettings
    void writeToSettings();
    //从QSettings中读取数据
    void readFromSettings();

private:
    Ui::QSettingsDialog *ui;

    const static QString BEGINSTRING;
};

#endif // QSETTINGSDIALOG_H

qsettingsdialog.cpp文件:

#include "qsettingsdialog.h"
#include "ui_qsettingsdialog.h"
#include <QSettings>

const QString QSettingsDialog::BEGINSTRING("part 1");

QSettingsDialog::QSettingsDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QSettingsDialog)
{
    ui->setupUi(this);

    setupConnect();
    readFromSettings();
}

QSettingsDialog::~QSettingsDialog()
{
    delete ui;
}

void QSettingsDialog::setupConnect()
{
    connect(ui->mBtnReadData, &QPushButton::clicked,
            this, &QSettingsDialog::writeToSettings);
    connect(ui->mBtnClear, &QPushButton::clicked,
            this, &QSettingsDialog::clearData);
    connect(ui->mBtnExit, &QPushButton::clicked,
            qApp, &QApplication::closeAllWindows);
}

void QSettingsDialog::clearData()
{
    ui->mEditName->clear();
    ui->mEditPhoneNum->clear();

    writeToSettings();
}

void QSettingsDialog::writeToSettings()
{
   QSettings settings("Jowei Inc.", "TestSettings", this);
   settings.beginGroup(BEGINSTRING);
   settings.setValue("name", ui->mEditName->text().trimmed());
   settings.setValue("phoneNumber", ui->mEditPhoneNum->text().trimmed());
   settings.endGroup();
}

void QSettingsDialog::readFromSettings()
{
    QSettings settings("Jowei Inc.", "TestSettings", this);
    settings.beginGroup(BEGINSTRING);
    ui->mEditName->setText(settings.value("name").toString().trimmed());
    ui->mEditPhoneNum->setText(settings.value("phoneNumber").toString().trimmed());
    settings.endGroup();
}

当用户点击ReadData按钮时,将文本框中的数据写入到QSettings中。

当用户启动程序时,程序自动从QSettings读取信息,并写入到文本框中

时间: 2024-10-15 20:46:14

QSettings的使用的相关文章

QSettings 用法总结(很好用)

原文  http://hi.baidu.com/fightiger/blog/item/ba69a434f36e18add1a2d350.html 用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位置,一些别的设置,还有一个经常用的,就是recent files,等等这些都可以通过Qsettings来实现. 我们知道,这些settings一般都是存在系统里的,比如windows一般都写在系统注册表或者写INI文件,mac系统一般都在XML文件里,那么按照一般的标准

QSettings保存程序设置

今天看了一些QSettings的简单用法,可以用来保存程序的设置,使得程序每次启动都可以显示上次关闭时的状态.我这里实现了一个简单的文本编辑窗口,可以设置文本的字体,字体的颜色和背景色.每次关闭程序都保存程序的几何大小,位置和文本以及文本所设置的格式,方便启动程序后继续编辑. 文本编辑窗口 TextEditor继承了QTextEdit,主要实现文本编辑和文本格式设置.保存文本信息时直接用的html字符串形式保存,可以同时保存文本的格式. [cpp] view plain copy class T

Qt配置信息设置(QSettings在不同平台下的使用路径)

在Windows操作系统中,大多把配置文件信息写在注册表当中,或写在*.ini文件中,对于这两种操作都有相应的Windows API函数,在以前的文章中都提及过,这里就不多说了~ 在Qt中,提供了一个相应的配置文件的类QSetting,使用QSetting类,可以将用户设置以及应用程序的设置轻松存储在磁盘中. QSettings::Format(配置存储格式)分为NativeFormat.IniFormat.InvalidFormat.这里主要讲的是NativeFormat和IniFormat.

保存应用程序设置(QSettings)

保存应用程序设置(QSettings) 1.   QSettings 类 QSettings 提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等. 在 Windows 系统中,程序程序的状态信息记录在注册表中:在 Mac OS X 系统上,这些信息记录在 XML 配置文件中:在 Unix 系统中,则使用 INI text 文件记录.QSettings 则是对这些技术的一个抽象,使得保存和取得应用程序的设置状态的只得独立于操作系统. QSettings

【Qt 】QSettings写ini配置文件

QSettings写ini配置文件(Qt版本5.2): #include "inidemo.h" #include <QSettings> #include <QTextCodec> IniDemo::IniDemo(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); QSettings settings("setting.ini",QSettings::IniFormat);

QSettings使用方法

一 .QSettings介绍: 用户通常希望应用程序记住其设置.在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中.QSettings有两种存储格式:QSettings::NativeFormat(在windows平台可读写注册表).QSettings::IniFormat(读写ini文件).QSettings::InvalidFormat QSettings使用户可以保存应用程序设置,并且支持用户自定义存储格式.QSetin

qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)

参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVariant对象,使用其setValue方法添加自定义对象. 3.在读取的时候,采用QVariant对象的value方法返回自定义对象. 写入: //类型转换 QVariant v; v.setValue(MyStruct);  读取: //转换为自定义的结构体实例 MyStruct s = v.va

QSettings 类

一 .QSettings介绍: 用户通常希望应用程序记住其设置.在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中.QSettings有两种存储格式:QSettings::NativeFormat(在windows平台可读写注册表).QSettings::IniFormat(读写ini文件).QSettings::InvalidFormat QSettings使用户可以保存应用程序设置,并且支持用户自定义存储格式.QSetin

qsettings

f:\linux\android\leon\workspace\qsettings\res\xml\settings_headers.xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <Preference android:key="profiles_settings" android:title="@string/profi