Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Subclassing QSettings give error on the position of ini file in Linux Kubuntu
Forum Updated to NodeBB v4.3 + New Features

Subclassing QSettings give error on the position of ini file in Linux Kubuntu

Scheduled Pinned Locked Moved General and Desktop
3 Posts 2 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    arsinte_andrei
    wrote on last edited by
    #1

    the problem is that I've made a subclass of the QSettings and I can not set a proper path for the ini file. the app have to work on windows and linux maybe mac but after few years.. not now...

    • AtpSettings - the subclassing class
      @
      AtpSettings::AtpSettings(QString iniFileName) {
      QString iniFileNameAndPath;
      iniFileNameAndPath = AtpSettings::getApplicationPath() + "/" + iniFileName;
      qDebug() << iniFileNameAndPath;
      mySettings->setPath(Format::IniFormat, Scope::UserScope, AtpSettings::getApplicationPath());
      mySettings = new QSettings(iniFileNameAndPath ,QSettings::IniFormat);
      mySettings->setDefaultFormat(QSettings::IniFormat);

    mySettings->setFallbacksEnabled(false);
    }

    AtpSettings::~AtpSettings(){
    qDebug() <<"Exit AtpSettings";
    }

    QPoint AtpSettings::getAppPosition(){
    return mySettings->value("Appearance/Position", QPoint(500, 700)).toPoint();
    }

    void AtpSettings::setAppPosition(QPoint pointsPos){
    mySettings->setValue("Appearance/Position", pointsPos);
    qDebug() << mySettings->fileName();
    }

    QSize AtpSettings::getAppSize(){
    return mySettings->value("Appearance/Size", QSize(1000, 800)).toSize();
    }

    void AtpSettings::setAppSize(QSize appSize){
    mySettings->setValue("Appearance/Size", appSize);
    qDebug() << mySettings->fileName();
    }

    QString AtpSettings::getApplicationPath() {
    QDir dirName(QApplication::applicationDirPath());
    qDebug() << dirName.path();
    return dirName.path();
    }
    @

    • AtpMainWindow
      @
      AtpMainWindow::AtpMainWindow(QWidget *parent, bool hasMdiArea) : QMainWindow(parent){
      qDebug()<<"Start AtpMainWindow" << hasMdiArea;
      settingsMainWindow = new AtpSettings();
      qDebug() << settingsMainWindow->fileName();
      setWindowTitle("@atp@");

    AtpSingleApplication singleApp = dynamic_cast<AtpSingleApplication> (qApp);
    if (singleApp!=NULL) {
    singleApp->setActivationWindow(this);
    }
    readSettings();
    }

    AtpMainWindow::~AtpMainWindow(){
    qDebug()<<"Exit AtpMainWindow";
    }

    void AtpMainWindow::quit() {
    emit closeRequested();
    QMainWindow::close();
    }

    //event on close mainWindow
    void AtpMainWindow::closeEvent(QCloseEvent *e) {
    qDebug()<<"Start closeEvent";
    if (maybeSave()) {
    writeSettings();
    e->accept();
    QApplication::quit();
    } else {
    e->ignore();
    }
    }

    //save any unsaved data
    bool AtpMainWindow::maybeSave(){
    return true;
    }

    //Restores the application window settings (size, position, ...).
    void AtpMainWindow::readSettings() {
    qDebug()<<"readSettings";
    qDebug() << settingsMainWindow->fileName();
    QPoint windowPos = settingsMainWindow->getAppPosition();
    QSize windowSize = settingsMainWindow->getAppSize();
    resize(windowSize);
    move(windowPos);
    }

    // Stores the application window settings (size, position, ...).
    void AtpMainWindow::writeSettings() {
    qDebug()<<"writeSettings";
    qDebug() << settingsMainWindow->fileName();
    settingsMainWindow->setAppPosition(pos());
    settingsMainWindow->setAppSize(size());
    qDebug() << settingsMainWindow->fileName();
    }
    @

    now in AtpSettings eveything is ok.. all the paths read fine and are corectly displayed by qDebug() << but on AtpMainWindow the output is different on the qDebug()<<. In @AtpMainWindow::AtpMainWindow(QWidget *parent, bool hasMdiArea) : QMainWindow(parent)@ is okit put the ini next to the exe file or executable file in linux, but on the @void AtpMainWindow::readSettings() @ and @void AtpMainWindow::writeSettings() @ it display a different path and i do not change the path anywhere as you can see.

    • AtpMainWindow.h
      @private:
      AtpSettings settingsMainWindow;@
      and this is the output on console
      @[../../../electricity/src/AtpCore/AtpSettings.cpp:69, static QString AtpSettings::getApplicationPath()]
      Debug: "/home/andrei/Qt-projects/electricity/debug"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:15, AtpSettings::AtpSettings(QString)]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp.ini"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:69, static QString AtpSettings::getApplicationPath()]
      Debug: "/home/andrei/Qt-projects/electricity/debug"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:69, static QString AtpSettings::getApplicationPath()]
      Debug: "/home/andrei/Qt-projects/electricity/debug"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:15, AtpSettings::AtpSettings(QString)]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp.ini"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:69, static QString AtpSettings::getApplicationPath()]
      Debug: "/home/andrei/Qt-projects/electricity/debug"
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:14, AtpMainWindow::AtpMainWindow(QWidget
      , bool)]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp/@atp@.ini"
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:52, void AtpMainWindow::readSettings()]
      Debug: readSettings
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:53, void AtpMainWindow::readSettings()]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp/@atp@.ini"
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:62, void AtpMainWindow::writeSettings()]
      Debug: writeSettings
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:63, void AtpMainWindow::writeSettings()]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp/@atp@.ini"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:37, void AtpSettings::setAppPosition(QPoint)]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp.ini"
      [../../../electricity/src/AtpCore/AtpSettings.cpp:46, void AtpSettings::setAppSize(QSize)]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp.ini"
      [../../../electricity/src/AtpGui/AtpMainWindow.cpp:66, void AtpMainWindow::writeSettings()]
      Debug: "/home/andrei/Qt-projects/electricity/debug/atp/@atp@.ini" @
      is true I have declared this in
    • main.cpp
      @app->setOrganizationName("atp");
      app->setOrganizationDomain("atp-trading.com");
      app->setApplicationName("@atp@");
      app->setApplicationVersion("1");
      app->setApplicationDisplayName("atp");@
      but i do not understand why is changing the path?? where??
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      @
      mySettings->setPath(Format::IniFormat, Scope::UserScope, AtpSettings::getApplicationPath());
      mySettings = new QSettings(iniFileNameAndPath ,QSettings::IniFormat);
      @

      You are overwriting mySettings. Just out of curiosity, why are you subclassing QSettings ? It doesn't seem that you really need it.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • A Offline
        A Offline
        arsinte_andrei
        wrote on last edited by
        #3

        just because i'm saving some specific dataand I want to have a file that is dealing with setting all settings - they are in different files but only one main class deal with settings and that is AtpSettings

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved