Существует множество способов сохранения настроек приложений, написанных на C++. Однако в Qt для это предусмотрен специальный модуль - 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;
}
Итак, получили готовую программу, которая сохраняет позицию и содержимое текстового виджета, а затем восстанавливает их при повторном запуске.