Я по-прежнему относительно новичок в Qt, и я недавно работал над крупным проектом. Когда я пытаюсь запустить проект, я получаю эту ошибку:
ASSERT failure in QList<T>::at: "index out of range", file c:\qt\qt5.3.0\5.3\msvc2013_64\include\qtcore\qlist.h, line 479
Просто интересно, знает ли кто-нибудь, что это значит или как я могу отслеживать источник проблемы?
[edit] Я считаю, что добавление этого кода вызывает ошибку
autAtom *aP = new autAtom(Principal);
autAtom *aQ = new autAtom(Principal);
autData *P = new autData (DataAtom, aP);
autData *Q = new autData (DataAtom, aQ);
autData *X = new autData (AnyData);
AUTPostulate *p;
autStatementList preList;
{
preList.clear();
//autData *d1 = new autData(NotHereData, X);
autStatement *pre1 = new autStatement(aP, believes, X);
autStatement *goal = new autStatement(aP, sees, X);
preList.append(pre1);
p = new AUTPostulate("BS", BS, goal, preList);
cout << "" << p->getString().toStdString() << endl;
AUTPostulates.append(p);
}
Когда это вынимается, инструмент работает нормально.
Я столкнулся с аналогичной проблемой, потому что перед connect
виджета я connect
к itemChanged
а затем во время заполнения кода слота. После того, как я включил охранник, который предотвратил обработку сигнала во время отображения виджета, я обнаружил, что могу заполнить виджет, и я также мог бы обработать сигнал после этого. Надеюсь это поможет.
Индекс вне диапазона означает, что вы пытаетесь получить доступ к индексу объекта QList или, возможно, к объекту, который является подклассом QList, который не существует. Поэтому, если у вас есть QList длиной 5 и вы пытаетесь получить доступ к индексу 5, это будет вне диапазона.
Кроме того, похоже, что ваш код содержит много классов, которые не являются стандартными для Qt или C++. По крайней мере, я их не узнаю. Трудно сказать, что происходит здесь, не зная об этих классах.