Q4之保存窗体状态

来源:互联网 发布:斗鱼抢鱼丸软件 编辑:程序博客网 时间:2024/05/17 14:15

在实际的运用过程中,常需要应用程序能保存程序的状态以及用户的设置,如应用程序显示的大小,位置,背景颜色或用户设置的参数等信息,以便在下次运行程序时,能保持上次关闭的状态。

在Qt的使用过程中,我们使用Qsetting来保存程序的状态。使得当用户再次打开时,窗体仍然可以呈现半闭时的状态。


下面我举一个简单的例子加以说明:

贴上代码:

setting.h:

#ifndef SETTINGS_H#define SETTINGS_H#include <QDialog>class QPushButton;class QLabel;class QTextEdit;class Settings : public QDialog{    Q_OBJECTpublic:    Settings();        QLabel *label;    QPushButton *colorBtn;    QTextEdit *edit;       void readSettings();    void writeSettings();    protected:    void closeEvent(QCloseEvent *);    public slots:    void slotColor();};#endif // SETTINGS_H

setting.cpp:

#include "settings.h"#include <QtGui>Settings::Settings(){    setWindowTitle("Settings");        label = new QLabel;    label->setText("Setting Test");             colorBtn = new QPushButton;    colorBtn->setText("Select Color");        edit = new QTextEdit;            QGridLayout *layout = new QGridLayout(this);    layout->addWidget(label,0,0);    layout->addWidget(colorBtn,0,1);    layout->addWidget(edit,1,0,1,2);        readSettings();        connect(colorBtn, SIGNAL(clicked()), this, SLOT(slotColor()));}voidSettings::slotColor(){    QColor color = QColorDialog::getColor (Qt::blue);            if(color.isValid())    {    QPalette p = label->palette();p.setColor(QPalette::Normal,QPalette::WindowText,color);label->setPalette(p);    }}void Settings::readSettings(){    QSettings setting("MyPro","settings");    setting.beginGroup("Dialog");    QPoint pos = setting.value("position").toPoint();    QSize size = setting.value("size").toSize();        setting.endGroup();        setting.beginGroup("Content");    QColor color = setting.value("color").value<QColor>();    QString text = setting.value("text").toString();    setting.endGroup();        move(pos);    resize(size);    QPalette p = label->palette();    p.setColor(QPalette::Normal,QPalette::WindowText,color);    label->setPalette(p);    edit->setPlainText(text);}voidSettings::writeSettings(){    QSettings setting("MyPro","settings");    setting.beginGroup("Dialog");    setting.setValue("position",pos());    setting.setValue("size",size());    setting.endGroup();        setting.beginGroup("Content");    setting.setValue("color",label->palette().color(QPalette::WindowText));    setting.setValue("text",edit->toPlainText());    setting.endGroup();}voidSettings::closeEvent(QCloseEvent *e){    writeSettings();}


settting.pro:

####################################################################### Automatically generated by qmake (2.01a) ?? ?? 10 23:13:13 2008######################################################################TEMPLATE = appTARGET = DEPENDPATH += .INCLUDEPATH += .# InputHEADERS += settings.hSOURCES += main.cpp settings.cpp




main.cpp:

#include <QApplication>#include "settings.h"int main(int argc, char *argv[]){    QApplication app(argc,argv);    Settings *s = new Settings();    s->show();    return app.exec();}


运行效果如下:


点击"select color"按钮,选择一种颜色,

如下:

再次打开,还是显示关闭时的状态。