Log Path speichern
Solved
German
-
Hallo zusammen,
ich habe enen Qdialog erstellt , der SetupDialog heisst.
Dieses Dialog hat die Aufgabe den Pfad zu speichern.
Meine Implementiereung sieht so aus:Header File:
#pragma once #include <QDialog> #include "ui_setupDialog.h" class SetupDialog : public QDialog { Q_OBJECT public: SetupDialog(QWidget *parent = Q_NULLPTR); ~SetupDialog(); public slots: void accept(); void reject(); /** * Open a file browse dialog to browse the logfile path. */ void browseLogfilePath(); private: void setupSettings(); private: Ui::setupDialog ui; };
cpp File:
SetupDialog::SetupDialog(QWidget *parent) : QDialog(parent) { ui.setupUi(this); setupSettings(); } SetupDialog::~SetupDialog() { } void SetupDialog::setupSettings() { // Load logfile directory and name from settings QSettings settings; QString logfileDir = settings.value ( Constants::instance()->setupLogfileDirKey(), Constants::instance()->setupLogfileDirDefault() ).toString(); QString logfileName = settings.value ( Constants::instance()->setupLogfileNameKey(), Constants::instance()->setupLogfileNameDefault() ).toString(); ui.lineEditLogfilePath->setText ( logfileDir + logfileName ); } void SetupDialog::browseLogfilePath() { QString logfilePath = QFileDialog::getSaveFileName ( this, Constants::instance()->applicationName(), "", // Default direcory tr("Log (*.log);;All (*.*)"), // File filter 0, QFileDialog::DontConfirmOverwrite ); if (!logfilePath.isNull()) { // If the logfile path is not null, e. g. the dialog was not // cancelled, show the new file path ui.lineEditLogfilePath->setText(logfilePath); } } void SetupDialog::accept() { // Save changed logfile path, directory and name separately QFileInfo logfileInfo(ui.lineEditLogfilePath->text()); QSettings settings; settings.setValue ( Constants::instance()->setupLogfileDirKey(), logfileInfo.absolutePath().append("/") ); settings.setValue ( Constants::instance()->setupLogfileNameKey(), logfileInfo.fileName() ); settings.sync(); // Call base accept method QDialog::accept(); } void SetupDialog::reject() { QDialog::reject(); }
Die klasse Constants: ist nicht anders als eine Singleton , damit ich sicher bin, dass dieses klassen nur eine Instance hat und nicht mehr.
Meine problem ist so bald ich den SetupDialog verlasse, dann ist der ausgesuchte Pfad wieder verloren.
Was mache ich den falsch?Danke
-
@Galilio
du erstellt dein QSettings Objekt ohne Parameter.
D.h. du musstQCoreApplication::setOrganizationName()
undQCoreApplication::setApplicationName()
zuvor aufrufen.
Oder du setzt eben die Konstruktor Parameter.