Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Call for Presentations - Qt World Summit

    QSettings на Qt 4.8.4, Mac OS X 10.6.8 не винаги запазва стойности

    Bulgarian
    4
    6
    5177
    Loading More Posts
    • 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.
    • V
      vanyog last edited by

      На Mac OS X 10.6.8 с Qt 4.8.4 използвам клас QSettings за съхраняване на някои настройки, но забелязах, че стойностите се запазват само когато затваря програмата с червеното бутонче за затваряне на главния прозорец.

      При затваряне на програмата с клавишна комбинация cmd+Q или с Quit от менюто на програмата, стойностите не се запазват, въпреки, че при всички начини на затваряне функцията, която запазва стойностите, се изпълнява.

      Това дали не е бъг на Qt 4.8.4?

      1 Reply Last reply Reply Quote 0
      • R
        Robbin last edited by

        Аз не съм имал подобен проблем. Викаш ли някъде метод за запазване на стойностите? Винаги можеш да прихванеш close event и да запишеш информацията преди затварянето.

        Ето как съм направил аз в една моя програма:

        @
        void calculator::keyPressEvent(QKeyEvent *e) {
        switch(e->key()) {
        case 16777216:
        saveSettings();
        hide();
        break;
        }
        }

        void calculator::changeEvent(QEvent *e)
        {
        QMainWindow::changeEvent(e);
        switch (e->type()) {
        case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
        case QEvent::Close:
        saveSettings();
        break;
        default:
        break;
        }
        }
        @

        Изпълнява се saveSettings() метода при натискането на Escape (което скрива след това прозореца) или при затваряне на прозореца. Мисля че това ще ти свърши работа, тъй като имаш и keypress евенти и можеш да си добавиш други комбинации ;-)
        Потърси повече информация за двата метода. В случая екстендвам QMainWindow.

        1 Reply Last reply Reply Quote 0
        • L
          leon.anavi last edited by

          [quote author="vanyog" date="1364629143"]
          Това дали не е бъг на Qt 4.8.4?
          [/quote]

          Едва ли, но може да провериш в "JIRA":https://bugreports.qt-project.org/secure/IssueNavigator.jspa?mode=show&createNew=true. Според мен е по-добре преди това да последваш съвета на Eus и да провериш обработката на събитията.

          http://anavi.org/

          1 Reply Last reply Reply Quote 0
          • V
            vanyog last edited by

            Здравейте,
            Благодаря за отговорите.
            Кодът, който пиша може да се види тук:
            https://github.com/vanyog/grammar-bg/blob/master/mainform.cpp

            Иначе търсенето в https://bugreports.qt-project.org с думи QSettings Mac дава много резултати, в които ми е трудно да се ориентирам.

            1 Reply Last reply Reply Quote 0
            • V
              vanyog last edited by

              За моя изненада работата се оправи.
              Пробвах да компилирам програмата и на Windows. Там всичко със запазването на стойностите работеше, но за да мога да затварям програмата и на Windows с Ctrl+Q, добавих нов ред в менюто: File - Quit, който свързах със слота за затваряне на главния прозорец. После се върнах отново на Mac, компилирах и вече като затварям с cmd+Q, стойностите се запазват. На Mac, обаче, новия ред не се показва в меню File, защото си го има в менюто с името на програмата, както го имаше и преди.

              1 Reply Last reply Reply Quote 0
              • R
                radolin last edited by

                Имай предвид, че в QSettings има доста сериозен бъг, при който може да ти се загуби цялата информация, поне ако ползваш .ini файл за съхранение. Вероятността е особенно голяма, ако файловата система е с write cache активиран.

                Можеш да намериш кръпка тук:
                https://bugreports.qt-project.org/browse/QTBUG-21739

                За съжаление не съм имал време да я подготвя и пусна в Gerrit, пък и знам ли в най-новите версии може и да е оправено.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post