Path salvataggio QSettings in Windows
-
ciao!
ho questo codice che salva alcune credenziali con QSettings:
void ImpostazioniWindow::on_btnDbSave_clicked() { QString dbName = ui->txtDbName->text(); QString dbUser = ui->txtDbUser->text(); QString dbPassword = ui->txtDbPwd->text(); QString dbHost = ui->txtDbHost->text(); QString dbPort = ui->txtDbPort->text(); if (!dbName.isEmpty() && !dbUser.isEmpty() && !dbPassword.isEmpty() && !dbHost.isEmpty() && !dbPort.isEmpty()) { settings.setValue("DB_NAME", dbName); settings.setValue("DB_USER", dbUser); settings.setValue("DB_PASSWORD", dbPassword); settings.setValue("DB_HOST", dbHost); settings.setValue("DB_PORT", dbPort); close(); } else { QMessageBox msgBox; msgBox.setText("Tutti i campi sono obbligatori!"); msgBox.exec(); } }
funziona perfettamente su linux, e sul 99% dei pc con windows (7 e 10).
ma su un pc sembra non salvi i dati.
volevo fare un controllo sull'eventuale file salvato, confrontandolo con gli altri pc.
ma non riesco a trovare dove viene salvato il file di configurazione.
sapete aiutarmi?? -
allora, impostazioni.h
#ifndef IMPOSTAZIONIWINDOW_H #define IMPOSTAZIONIWINDOW_H #include <QWidget> #include <QSettings> #include <QMessageBox> namespace Ui { class ImpostazioniWindow; } class ImpostazioniWindow : public QWidget { Q_OBJECT public: explicit ImpostazioniWindow(QWidget *parent = 0); virtual ~ImpostazioniWindow(); private slots: void on_btnDbSave_clicked(); private: Ui::ImpostazioniWindow *ui; QSettings settings; }; #endif // IMPOSTAZIONIWINDOW_H
impostazioni.cpp
#include "impostazioniwindow.h" #include "ui_impostazioniwindow.h" ImpostazioniWindow::ImpostazioniWindow(QWidget *parent) : QWidget(parent), ui(new Ui::ImpostazioniWindow) { ui->setupUi(this); ui->tabWidget->removeTab(1); } void ImpostazioniWindow::on_btnDbSave_clicked() { QString dbName = ui->txtDbName->text(); QString dbUser = ui->txtDbUser->text(); QString dbPassword = ui->txtDbPwd->text(); QString dbHost = ui->txtDbHost->text(); QString dbPort = ui->txtDbPort->text(); if (!dbName.isEmpty() && !dbUser.isEmpty() && !dbPassword.isEmpty() && !dbHost.isEmpty() && !dbPort.isEmpty()) { settings.setValue("DB_NAME", dbName); settings.setValue("DB_USER", dbUser); settings.setValue("DB_PASSWORD", dbPassword); settings.setValue("DB_HOST", dbHost); settings.setValue("DB_PORT", dbPort); close(); } else { QMessageBox msgBox; msgBox.setText("Tutti i campi sono obbligatori!"); msgBox.exec(); } } ImpostazioniWindow::~ImpostazioniWindow() { delete ui; }
falla di sicurezza perchè scrivo la pwd su file??
si lo so, ma parliamo di un programma ad uso aziendale.
non saprebbero che farci con quella pwd, la scrivo nel programma al primo avvio, e non saprebbero neanche che farci.... -
Visto che usi il default constructor per
QSettings
quello non viene salvato su file ma su chiavi di registro di windows (a visibilita' per-utentehkey_local_user
).Se vuoi forzare il salvataggio su file anche in windows:
ImpostazioniWindow::ImpostazioniWindow(QWidget *parent) : QWidget(parent), ui(new Ui::ImpostazioniWindow) , settings(QSettings::IniFormat,QSettings::UserScope #ifdef Q_OS_MAC QCoreApplication::organizationDomain().isEmpty() ? QCoreApplication::organizationName() : QCoreApplication::organizationDomain() #else QCoreApplication::organizationName().isEmpty() ? QCoreApplication::organizationDomain() : QCoreApplication::organizationName() #endif , QCoreApplication::applicationName())) {
-
@fermatqt said in Path salvataggio QSettings in Windows:
perchè quell'if su Q_OS_MAC?
Ho semplicemente copiato e incollato il sorgente di Qt con la sola modifica di usare
QSettings::IniFormat
-
@VRonin said in Path salvataggio QSettings in Windows:
@fermatqt said in Path salvataggio QSettings in Windows:
perchè quell'if su Q_OS_MAC?
Ho semplicemente copiato e incollato il sorgente di Qt con la sola modifica di usare
QSettings::IniFormat
ah ok ok.
grazie!!