Qt5 - QSettings: Пример использования
У вас есть виджет, позицию которого надо сохранить. Начинаем с того, что выведем его на экран (QTextEdit
также позволяет отображать и редактировать текст):
#include <QApplication> #include <QTextEdit> int main( int argc, char* argv[] ) { QApplication a( argc, argv ); QTextEdit edit; edit.show(); return a.exec(); }
Следующим пунктом сохраняем позицию и содержимое виджета в файл настроек:
#include <QApplication> #include <QTextEdit> #include <QSettings> int main( int argc, char* argv[] ) { QApplication a( argc, argv ); QTextEdit edit; edit.show(); int res = a.exec(); QSettings settings( "settings_demo.conf", QSettings::IniFormat ); settings.beginGroup( "WidgetPosition" ); settings.setValue( "x", edit.x() ); settings.setValue( "y", edit.y() ); settings.setValue( "width", edit.width() ); settings.setValue( "height", edit.height() ); settings.endGroup(); settings.beginGroup( "WidgetContent" ); settings.setValue( "text", edit.toPlainText() ); settings.endGroup(); return res; }
Настройки сохраняются в файле settings_demo.conf
в формате ini
. Содержимое файла выглядит следующим образом:
[WidgetPosition] x=676 y=210 width=750 height=550 [WidgetContent] text=Test
Чтобы восстановить настройки, выполним следующее:
#include <QApplication> #include <QTextEdit> #include <QSettings> int main( int argc, char* argv[] ) { QApplication a( argc, argv ); QTextEdit edit; QSettings settings( "settings_demo.conf", QSettings::IniFormat ); settings.beginGroup( "WidgetPosition" ); int x = settings.value( "x", -1 ).toInt(); int y = settings.value( "y", -1 ).toInt(); int width = settings.value( "width", -1 ).toInt(); int height = settings.value( "height", -1 ).toInt(); settings.endGroup(); if( x > 0 && y > 0 && width > 0 && height > 0 ) { edit.setGeometry( x, y, width, height ); } settings.beginGroup( "WidgetContent" ); QString text = settings.value( "text", "" ).toString(); settings.endGroup(); edit.setText( text ); edit.show(); int res = a.exec(); settings.beginGroup( "WidgetPosition" ); settings.setValue( "x", edit.x() ); settings.setValue( "y", edit.y() ); settings.setValue( "width", edit.width() ); settings.setValue( "height", edit.height() ); settings.endGroup(); settings.beginGroup( "WidgetContent" ); settings.setValue( "text", edit.toPlainText() ); settings.endGroup(); return res; }
Итак, получили готовую программу, которая сохраняет позицию и содержимое текстового виджета, а затем восстанавливает их при повторном запуске.
Комментарии