Solved 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?? -
- Puoi mostrare dove costruisci
settings
? settings.setValue("DB_PASSWORD", dbPassword);
questo fa male solo a vedersi. enorme falla di sicurezza
- Puoi mostrare dove costruisci
-
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())) {
-
penso che salverò su file.
su alcune versioni di windows mi da problemi il salvataggio su registro.ma non ho capito una cosa.
perchè quell'if su Q_OS_MAC?
sul mac non viene già salvato su file come su linux? -
@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!!