Вопрос QStandardItem

У меня проблема с Qlist из QStandardItems, когда я хочу заполнить этот QList.
Это сообщение об ошибке от Qt Creator: сбой ASSERT в QList :: operator []: «индекс вне диапазона»

Это мой код, но он временный, img будет меняться при каждой итерации.

for(int i=0;i<4;i++)
{
QList <QStandardItem*> itemCountryFlagTab;
QImage img =QImage(":/country/DataBase/country_flags/us.gif");
itemCountryFlagTab.reserve(5);
itemCountryFlagTab[i]->setData(QVariant(QPixmap::fromImage(img)), Qt::DecorationRole);
modelTraceRoute.setItem(i, 4, itemCountryFlagTab[i]);
}

0

Решение

Вы не инициализируете itemCountryFlagTab перед его использованием, и, таким образом, вы ссылаетесь на элементы, которых у него нет, и это является источником вашей ошибки. Кроме того, вы создаете itemCountryFlagTab с нуля во время каждой итерации цикла, поэтому даже если вы инициализируете ее, результаты будут потеряны после окончания каждой итерации цикла.

Вкратце: кроме инициализации упомянутой переменной, вы также должны поместить itemCountryFlagTab объявление вне цикла, если вы хотите, чтобы он не сбрасывался / исчезал после каждой итерации.

резерв() Функция не используется для инициализации переменных — она ​​просто выделяет пространство для них, так что данные QList не нужно будет перераспределять снова и снова, если вы знаете, сколько элементов будет добавлено в список.

2

Другие решения


По вопросам рекламы [email protected]