У меня есть приложение, и пользователь может изменить папку по умолчанию для сохранения файлов.
Папка, в которой пользователь сохраняет файлы: QString SaveImagesDirectory;
Я хочу, чтобы при выходе из приложения данные в SaveImagesDirectory сохранялись в реестре.
Я попробовал следующий код:
QSettings settings(ORG_NAME, APP_NAME);
settings.setValue("LastGuiValue/LastSaveImagesDirectory",SaveImagesDirectory);
Проблема в том, что когда я обновлял реестр, в LastSaveImagesDirectory не было значения.
Поэтому, когда я пытался читать, используя следующий код:
SaveImagesDirectory=settings->value("LastGuiValue/LastSaveImagesDirectory",QDir::currentPath()).value<QString>();
Переменная SaveImagesDirectory получила только QDir::currentPath()
, Я посмотрел на реестр и действительно LastSaveImagesDirectory
был без значения.
Доброе утро,
Вы можете проверить, способна ли система записывать данные в реестр, реализовав простую тестовую программу, подобную этой:
// Registry Write Test Programm
#include <QtGui/QApplication>
#include <QtGui/QMessageBox>
#include <QtCore/QSettings>
#include <QtCore/QString>
#include <QtCore/QVariant>
int main( int argc, char **argv )
{
QApplication *app = new QApplication( argc, argv );
QSettings settings( QLatin1String( "D-Soft" ), QLatin1String( "RegistryTest" ) );
QString hello = settings.value( "LastGuiValue/LastSaveImagesDirectory" ).toString();
QMessageBox::information( NULL, QLatin1String( "Info" ),
QString( QLatin1String( "From Settings: %1" ) ).arg( hello ) );
if( hello.isEmpty() )
hello = QLatin1String( "Oh my!" );
settings.setValue( "LastGuiValue/LastSaveImagesDirectory", hello );
delete app;
app = NULL;
return 0;
}
Без необходимости повышенных разрешений ваша программа сможет писать в куст HKLM_CURRENT_USER / SOFTWARE. Эта программа должна доказать, если это так. Если это работает, вы должны проверить свой код или опубликовать его, в противном случае есть более глубокая проблема под рукой.
Других решений пока нет …