На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: Majestio
  
> Не удается загрузить настройки (QT)
    Здравствуйте!
    В проекте сохраняю и загружаю настройки. После сохранения файл с настройками имеет вид:
    ExpandedWrap disabled
      [SelectedChannels]
      1=false
      2=false
      3=true
      4=false
      5=false
      6=true
      7=false
      8=false
      9=false
      10=true
      11=false
      12=false
      13=true
      14=false
      15=false
      16=true
       
      [DataAcquisitionAndRecordingOptions]
      AdcChannelsPollingPeriod=0.01
      GraphUpdatePeriod=100
      WriteDataPeriod=300
      GraphSensorOptions="\x414\x430\x432\x43b\x435\x43d\x438\x435 (0,5-0,46)\n\x422\x440\x435\x43d\x438\x435 (0,01-0,4)\n\x412\x44f\x437\x43a\x43e\x441\x442\x44c (45,8-67,5)"
      FileNameForSaveResult=resultdata.dat
    При этом в QTextEdit я ввожу следующие данные:
    ExpandedWrap disabled
      Давление (0,5-0,46)
      Трение (0,01-0,4)
      Вязкость (45,8-67,5)
    У меня возникли следующие вопросы:
    1. Как правильно сохранять и загружать данные, которые я ввожу в QTextEdit? В редакторе крейтора установлен UTF-8.
    2. Данные я загружаю следующим образом:
    ExpandedWrap disabled
      void Dialog::LoadSettings()
      {
        QSettings settings(fileForSave, QSettings::IniFormat);
        settings.beginGroup("SelectedChannels");
        QStringList lstChannels = settings.childKeys();
        foreach (const QString &str, lstChannels)
        {
          Checks[str.toInt () - 1]->setChecked (settings.value (str).toBool ());
        }
        settings.endGroup();
        settings.beginGroup("DataAcquisitionAndRecordingOptions");
        QStringList lstData = settings.childKeys();
        foreach (const QString &str, lstData)
        {
          qDebug() << str;
        }
        spbSurvey->setValue(settings.value(lstData[0]).toDouble());
        spbGraphUpg->setValue(settings.value(lstData[1]).toInt());
        spbWriteData->setValue(settings.value(lstData[2]).toInt());
        txtGraphSensor->setText(settings.value(lstData[3]).toString());
        lblFileName->setText(settings.value(lstData[4]).toString());
        settings.endGroup();
      }
    Почему-то последний ключ в файле настроек FileNameForSaveResult выводится в qDebug вторым, в результате параметры на форме устанавливаются неправильно. Что я делаю неправильно?
    Проект прикрепил. Помогите, пожалуйста.
    Прикреплённый файлПрикреплённый файлqtTestLayout.zip (4,13 Кбайт, скачиваний: 29)
      Цитата tumanovalex @
      1. Как правильно сохранять и загружать данные, которые я ввожу в QTextEdit? В редакторе крейтора установлен UTF-8

      tumanovalex, а вот тут пришло моё время тебя огорчить :lol:

      Дальше "халявы" не будет. Иначе ты просто будешь форум забрасывать вопросами, в надежде что за тебя кто-то что порешает. Тебя "научили ходить - дальше иди учись самостоятельно". Ну не совсем полностью, но в большей мере...

      В твоём распоряжении есть отладчик. Ставь точки останова, запускай дебаг. На точках останова анализируй содержимое переменных. И вот если ты скажешь "я перепробовал 5-7 различных методов, а они не прокатили" - вот тогда спрашивай. Но эти 5-7 методов и что там не получилось, ты будешь обязан предварительно описать. Если коротко ... давай учись мало-по-малу ходить самостоятельно. И начнём мы с этой темы!
        Как я понял, childKeys() и allKeys() сортируют ключи. Для чекбоксов это не стало проблемой из-за использования QVector<QCheckBox*> Checks и нумерации чекбоксов, а вот для других элементов интерфейса - стало. Нашел решения сохранения в XML, но они довольно сложные. Решил проблему коряво, но просто - сделал двузначную нумерацию в названиях параметров, например, 01_AdcChannelsPollingPeriod, 02_GraphUpdatePeriod и т.д.
          tumanovalex, ну если мы одну группу контролов определили как QVector<QCheckBox*>, то что нам мещает еще определить пару-тройку (сколько надо) групп. Но уже как QMap<QString, QWidget*>? А потом просто обращаться по ключам? С последующими правильными кастами.
            Спасибо за подсказку, попробую и так.
              Цитата Majestio @
              QMap<QString, QWidget*>

              Ну это конечно для гурманов :lol: Но вместо ключа типа QString лучше использовать что-то типа enum class. Будет не менее читабельно, но меньше вероятность ошибки указания ключа.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0242 ]   [ 18 queries used ]   [ Generated: 24.03.25, 18:52 GMT ]