Qt — Сохранение пути QString в QSettings в regisrty

У меня есть приложение, и пользователь может изменить папку по умолчанию для сохранения файлов.

Папка, в которой пользователь сохраняет файлы: 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 был без значения.

1

Решение

Доброе утро,

Вы можете проверить, способна ли система записывать данные в реестр, реализовав простую тестовую программу, подобную этой:

// 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. Эта программа должна доказать, если это так. Если это работает, вы должны проверить свой код или опубликовать его, в противном случае есть более глубокая проблема под рукой.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]