Запазване на състоянието на направена с 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();



 

Copyright CC BY-ND 4.0.
Посещения на страницата: общо 2602 днес 0
Направено с VanyoG CMS.

Force Reload