Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в QComboBox 
:(
    Опции темы
OlegIT
Дата 7.2.2014, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Qt5.2 . «Вручную» создал комбобокс, свою модель не использую.

Код

    MyCombo = new QComboBox();
    QGraphicsScene *scene = new QGraphicsScene();
    scene->addWidget(…);
    scene->addWidget(MyCombo);
 


Нужно обновить в нём информацию. Предварительно вызываю:
Код

MyCombo->clear();

и получаю ошибку выполнения
Цитата

ASSERT failure in QList<T>::operator[]: "index out of range", file C:/Qt/Qt5.2.0/5.2.0/mingw48_32/include/QtCore/qlist.h, line 480
 

Та же ошибка возникает когда я поштучно удаляю строки, на последней удаляемой строке. Очистка пустого комбобокса ошибок не даёт.
Комбобоксы в диалоге работает без ошибок.
Где я ошибаюсь? 

PM MAIL   Вверх
ALEXRAGE
Дата 7.2.2014, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.1.2014
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Скорее всего где-то происходит обращение к ComboBox по индексу элемента уже после очистки. Получается выход за пределы массива. Нужно проверить остальной код и там где происходит обращение к элементу поставить проверку, что индекс не больше количества элементов в данный момент.


Это сообщение отредактировал(а) ALEXRAGE - 7.2.2014, 11:20
PM MAIL   Вверх
OlegIT
Дата 7.2.2014, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Не вижу где это может быть. Свою модель не использую, используется по умолчанию внутренняя, так что с этой стороны проблем не должно быть. Элементы добавляю листом (MyCombo->addItems(QStringList)). Прохожу дебагером, дальше очистки MyCombo->clear(); или удаления элементов поштучно не иду, тут же ошибка.


PM MAIL   Вверх
ALEXRAGE
Дата 7.2.2014, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 17.1.2014
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(OlegIT @  7.2.2014,  08:38 Найти цитируемый пост)
in QList<T>::operator[]: "index out of range"

Это говорит о том, что в какой-то момент произошел вызов элемента за пределами QList. Либо индекс меньше нуля, либо больше, чем count(). А вот где это присходит по тому куску кода, который вы привели, понять очень сложно.
Что там вообще происходит? Что за проект?
PM MAIL   Вверх
vinter
Дата 7.2.2014, 14:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 3
Всего: 56



когда срабатывает assert, ты всегда может увидеть стек вызовов, который к нему привёл. Посмотри его и найдёшь ошибку.


--------------------
Мой блог
PM MAIL WWW   Вверх
OlegIT
Дата 7.2.2014, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Цитата(vinter @  7.2.2014,  14:22 Найти цитируемый пост)
Посмотри его и найдёшь ошибку. 

Спасибо, гляну.
Сделал тестовый проект обрезанием, оставил обвязку QGraphicsScene, комбобокс и кнопку очистить. Всё работает.
PM MAIL   Вверх
OlegIT
Дата 10.2.2014, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Цитата(vinter @  7.2.2014,  14:22 Найти цитируемый пост)
Посмотри его и найдёшь ошибку. 

Программа рушится так, что ни какого стека нет, дебагер тоже вылетает.
Прошу прощения, поторопился обратится за помощью. Наведённая ошибка была из-за не внимательности.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.