QSettings保存程序设置
2013-09-05 22:15
337 查看
今天看了一些QSettings的简单用法,可以用来保存程序的设置,使得程序每次启动都可以显示上次关闭时的状态。我这里实现了一个简单的文本编辑窗口,可以设置文本的字体,字体的颜色和背景色。每次关闭程序都保存程序的几何大小,位置和文本以及文本所设置的格式,方便启动程序后继续编辑。
文本编辑窗口
TextEditor继承了QTextEdit,主要实现文本编辑和文本格式设置。保存文本信息时直接用的html字符串形式保存,可以同时保存文本的格式。class TextEditor:public QTextEdit { Q_OBJECT public: TextEditor(QWidget *parent = NULL); ~TextEditor(); void SaveSettings(); protected: void ReadSettings(); void contextMenuEvent ( QContextMenuEvent * event ); private slots: void SettingBackColorSlot(); void SettingTextColorSlot(); void SettingTextFontSlot(); };
TextEditor::TextEditor( QWidget *parent /*= NULL*/ ):QTextEdit(parent) { ReadSettings(); } TextEditor::~TextEditor() { } void TextEditor::contextMenuEvent( QContextMenuEvent * event ) { QMenu *pMenu = createStandardContextMenu(); pMenu->addSeparator(); QTextCursor cursor = this->textCursor(); QString seletedText = cursor.selectedText(); if (!seletedText.isEmpty()) //选中文本才可以设置文本样式 { QMenu *pSubMenu = new QMenu(tr("设置"),pMenu); pMenu->addMenu(pSubMenu); QAction *pFontAct = new QAction(tr("字体"),pSubMenu); QAction *pTextColorAct = new QAction(tr("字体颜色"),pSubMenu); QAction *pBackColorAct = new QAction(tr("背景色"),pSubMenu); pSubMenu->addAction(pFontAct); pSubMenu->addAction(pTextColorAct); pSubMenu->addAction(pBackColorAct); connect(pFontAct,SIGNAL(triggered ()),this,SLOT(SettingTextFontSlot())); connect(pTextColorAct,SIGNAL(triggered ()),this,SLOT(SettingTextColorSlot())); connect(pBackColorAct,SIGNAL(triggered ()),this,SLOT(SettingBackColorSlot())); } pMenu->exec(event->globalPos()); delete pMenu; }
//设置文本背景色 void TextEditor::SettingBackColorSlot() { QColor color = QColorDialog::getColor(Qt::white, this, "Select Color", QColorDialog::DontUseNativeDialog); if(color.isValid()) { this->setTextBackgroundColor(color); } } //设置文本颜色 void TextEditor::SettingTextColorSlot() { QColor color = QColorDialog::getColor(Qt::black, this, "Select Color", QColorDialog::DontUseNativeDialog); if(color.isValid()) { this->setTextColor(color); } } //设置文本字体 void TextEditor::SettingTextFontSlot() { bool ok; QFont font = QFontDialog::getFont(&ok, this); if (ok) { QTextCursor cur = this->textCursor(); QString sltStr = cur.selectedText(); this->cut(); QTextCharFormat fmtText; fmtText.setFont(font); cur.insertText(sltStr,fmtText); } } //退出前保存文本信息 void TextEditor::SaveSettings() { QSettings TextSettings("Mysoft","TextData"); QString html = this->toHtml(); TextSettings.setValue("text",html); } //启动时读取信息 void TextEditor::ReadSettings() { QSettings TextSettings("Mysoft","TextData"); QString html = TextSettings.value("text").toString(); this->setHtml(html); }
程序主窗口
class TextEdit : public QMainWindow { Q_OBJECT public: TextEdit(QWidget *parent = 0, Qt::WFlags flags = 0); ~TextEdit(); protected: void closeEvent ( QCloseEvent * event ) ; void ReadSettings(); private: TextEditor *m_pCentralWidget; };
TextEdit::TextEdit(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { m_pCentralWidget = new TextEditor(this); this->setCentralWidget(m_pCentralWidget); ReadSettings(); } TextEdit::~TextEdit() { } void TextEdit::closeEvent( QCloseEvent * event ) { QSettings dialogSettings("Mysoft","dialogData"); //保存窗口位置和大小 dialogSettings.setValue("Rect",this->rect()); QPoint pos = this->pos(); dialogSettings.setValue("positionX",this->pos().x()); dialogSettings.setValue("positionY",this->pos().y()); m_pCentralWidget->SaveSettings(); } void TextEdit::ReadSettings() { QSettings dialogSettings("Mysoft","dialogData"); //读取窗口位置和大小 dialogSettings.setValue("Rect",this->rect()); dialogSettings.setValue("position",this->pos()); QRect rect = dialogSettings.value("Rect").value<QRect>(); this->setGeometry(rect); int posX = dialogSettings.value("positionX").toInt(); int posY = dialogSettings.value("positionY").toInt(); this->move(QPoint(posX,posY)); }
相关文章推荐
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- QSettings保存程序设置
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- 保存Java程序状态及设置Properties文件
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 保存Java程序状态及设置之Properties文件
- Qt 利用QSettings + config.ini 保存设置
- win8应用商店程序开发-保存/读取本地应用程序设置
- 用NSUserDefaults保存和读取程序设置
- <WP7>(六)手把手教你写天气预报程序:使用Isolatedstorage保存设置
- 保存Java程序状态及设置Properties文件
- ANDROID下使用PROPERTIES文件保存程序设置
- eclipse在程序修改后,点击运行可以自动保存,如何设置
- 编制一程序,要求设置10个学生成绩,并存放于10字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入10字节的RANK数组中,其中RANK
- 【转】Android下使用Properties文件保存程序设置
- qt4使用QSettings来保存设置、读取设置
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 保存Java程序状态及设置之对象序列…