Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Bulgarian
  4. QSettings на Qt 4.8.4, Mac OS X 10.6.8 не винаги запазва стойности

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

Scheduled Pinned Locked Moved Bulgarian
6 Posts 4 Posters 5.8k Views
  • 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 Offline
    V Offline
    vanyog
    wrote on 30 Mar 2013, 07:39 last edited by
    #1

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

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

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

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Robbin
      wrote on 30 Mar 2013, 10:55 last edited by
      #2

      Аз не съм имал подобен проблем. Викаш ли някъде метод за запазване на стойностите? Винаги можеш да прихванеш 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
      0
      • L Offline
        L Offline
        leon.anavi
        wrote on 30 Mar 2013, 18:15 last edited by
        #3

        [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
        0
        • V Offline
          V Offline
          vanyog
          wrote on 30 Mar 2013, 18:33 last edited by
          #4

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

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

          1 Reply Last reply
          0
          • V Offline
            V Offline
            vanyog
            wrote on 31 Mar 2013, 11:49 last edited by
            #5

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

            1 Reply Last reply
            0
            • R Offline
              R Offline
              radolin
              wrote on 1 Apr 2013, 06:43 last edited by
              #6

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

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

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

              1 Reply Last reply
              0

              6/6

              1 Apr 2013, 06:43

              • Login

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