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;
}
Итак, получили готовую программу, которая сохраняет позицию и содержимое текстового виджета, а затем восстанавливает их при повторном запуске.
Комментарии