Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
1

QSettings метод beginReadArray не верно возвращает количество элементов

09.06.2016, 20:44. Показов 2216. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Столкнулся с такой проблемой используя QSettings

Есть конфигурационный файл, сохраненный средствами QSettings, со следующим содержимым:

Кликните здесь для просмотра всего текста
[TagViewer]
Colums\1\Column=name
Colums\2\Column=dataType
Colums\3\Column=value
Colums\4\Column=path
Colums\size=4


Мне удается корректно считать значение из массива (AppSettings просто обертка над QSettings):

C++ (Qt)
1
2
3
4
5
6
    AppSettings::settings()->beginGroup(metaObject()->className());
    AppSettings::settings()->beginReadArray("Colums");
    AppSettings::settings()->setArrayIndex(1);
 
    qDebug() << AppSettings::settings()->value("Column");
    qDebug() << AppSettings::settings()->beginReadArray("Colums");
на выходе qDebug я получаю:
QVariant(QString, "dataType")
0

Почему значение корректно считывается, а метод beginReadArray возвращает the size of the array равный 0? Мне необходимо получить the size of the array...как работает этот метод?

Добавлено через 22 часа 32 минуты
Очень ооочень странно! Тот же самый код заработал ... и теперь возвращает 4. Мистика, думаю я под вечер, что-то упустил...или помог перезапуск среды...даже не знаю, как объяснить такое следствие. Но подобная проблема была не у меня одного:

[Форум]
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2016, 20:44
Ответы с готовыми решениями:

Верно ли, что функция - это метод который возвращает значение
Здраствуйте уважаемые знатоки :). Я читаю уже не одну статью про методы и функции. И у меня снова...

Разработать метод, который возвращает количество делителей заданного числа х
Разработать метод kolDel(x: Integer), который возвращает количество делителей заданного числа х....

Разработать метод, который для заданного натурального числа N возвращает количество его делителей
Разработать метод, который для заданного натурального числа N возвращает количество его делителей....

Метод без проблем возвращает строку, но не возвращает класс
Здравствуйте! Уже сутки бьюсь с проблемой и не пойму вообще почему она возникла. Есть WCF-сервер и...

2
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
09.06.2016, 23:06 2
Лучший ответ Сообщение было отмечено kavashige как решение

Решение

Цитата Сообщение от kavashige Посмотреть сообщение
Почему значение корректно считывается, а метод beginReadArray возвращает the size of the array равный 0? Мне необходимо получить the size of the array...как работает этот метод?
А вы перед вторым использованием beginReadArray предыдущую попытку с помощью AppSettings::settings()->endArray() закрывали?
0
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 91
10.06.2016, 08:21  [ТС] 3
Действительно, в первом вызове работает корректно, а повторный вызов с выводом в qDebug() уже нет...когда закоментировал qDebug() с вызовом все заработало корректно, но вчера я не понял, что причина была в этом. Мистика развеялась, спасибо.
0
10.06.2016, 08:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2016, 08:21
Помогаю со студенческими работами здесь

Выяснить верно ли, что количество положительных элементов не превышает 5
4. Дан массив вещественных чисел. Выяснить верно ли, что количество положительных элементов не...

Верно ли, что количество элементов, которые не больше 50, кратно 4
1. Дан массив вещественных чисел. Выяснить верно ли, что количество элементов, которые не больше...

Выяснить верно ли, что количество элементов последовательности, меньших 20, равно 5
Даны натуральное число n и целые числа с1,с2 , , ...,сn. Выяснить, верно ли,что количество тех...

Не верно возвращает массив
int create(int *ar) { int m,n,g,size=0; cout &lt;&lt;&quot;Введите рядок символов: &quot;; cin &gt;&gt; n; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru