Qt4之保存窗体状态
Qt4之保存窗体状态
实际的运用过程中,常需要应用程序能保存程序的状态以及用户的设置,如应用程序显示的大小,位置,背景颜色或用户设置的参数等信息,以便在下次运行程序时,能保持上次关闭的状态。在Qt的使用过程中,我们使用Qsetting来保存程序的状态。使得当用户再次打开时,窗体仍然可以呈现半闭时的状态。
下面我举一个简单的例子加以说明:
贴上代码:
setting.h:
- #ifndef SETTINGS_H
- #define SETTINGS_H
- #include <QDialog>
- class QPushButton;
- class QLabel;
- class QTextEdit;
- class Settings : public QDialog
- {
- Q_OBJECT
- public:
- Settings();
- QLabel *label;
- QPushButton *colorBtn;
- QTextEdit *edit;
- void readSettings();
- void writeSettings();
- protected:
- void closeEvent(QCloseEvent *);
- public slots:
- void slotColor();
- };
- #endif // SETTINGS_H
- #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()));
- }
- void
- Settings::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);
- }
- void
- Settings::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();
- }
- void
- Settings::closeEvent(QCloseEvent *e)
- {
- writeSettings();
- }
|
评论暂时关闭