Запазване на състоянието на направена с Qt програма
Страницата е създадена на:15 април 2019 и редактирана на: 2 февруари 2021
Почти всяка програма се налага
да запазва информация за състоянието
си в момента на затварянето си и да
използва запазената информация при
следващото си стартиране. Необходимо
е, например, да се съхраняват: направени
от потребителя настройки, предпочитаното
положение върху екрана и размерите на
прозореца, списъка на последно отваряните
файлове и др. За лесно осъществяване на
това запазване и четене на информация
в Qt е предвиден класът обекти QSettings
.
Запазването на стойности от едно
изпълнение на програма и четенето им
при следващото изпълнение се осъществява
в следния ред:
В някоя от функциите, които се изпълняват при затваряне на главния прозорец на програмата, например:
void closeEvent(QCloseEvent *event)
се създава обект от тип QSettings:
QSettings settings("MyCompany", "My Program");
Тук "MyCompany"
и "My Program"
са имена на фирма и на програма, които в съчетание еднозначно идентифицират програмата, запазила данни.
В създадения обект settings
, с функцията void setValue(const QString &key, const QVariant &value)
се запазват стойностите, които трябва да се съхранят до следващото стартиране на програмата.
Например:
settings.setValue("size",size());
запазва размера на главния прозорец.
Вторият параметър на функцията setValue
е от тип QVariant
, така че функцията позволява запазване на стойности от
много различни типове: int
, QString
, QStringList
и др. За повече информация вижте страниците
относно типа QVariant
в документацията.
Запазената информация в Windows се съхранява в ключ на регистъра:
HKEY_CURRENT_USER\Software\MyCompany\MyProgram
В macOS информацията се запазва в поддиректория Library/Preferences на личната директория на потребителя стартирал програмата, под име:
com.MyCompany.My Program.plist
.
При двойно щракване с мишката върху иконата на този файл във Finder, той се отваря с Xcode.
В Linux информацията се записва в конфигурационен файл с разширение .conf и име, както е името на програмата, например: My Program.conf. Този файл се записва в поддиректория с име, като зададеното име на фирма, в скритата директория .config, в личната директория на потребителя, стартиращ програмата. Например, ако името на потребителя е UserName, абсолютния път до файла, в който програмата My Program, на фирмата MyCompany, записва състоянието си е:
/home/UserName/.config/MyCompany/My Program.conf.
При стартиране на програмата запазените данни се четат от конструктора на главния прозорец. За да се прочетат запазените данни се създава обект от QSettings:
QSettings settings("MyCompany", "My Program");
със същите параметри, като на обекта, с който са запазени данните. Запазените стойности се присвояват на подходящи променливи, които ще бъдат използвани в програмата. Например:
Qstring fileName = settings.value("lastFile").toString();
Предишна страница: Превеждане на интерфейса при създаване на програми с Qt
Следваща страница: Работа с файлове