我仍然是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);
}
取出时,工具运行正常。
答案 0 :(得分:5)
我遇到了类似的问题,因为我在填充小部件之前在connect
上执行了itemChanged
,然后调用填充我的插槽代码。在我放置一个防止在小部件填充期间信号处理的警卫之后,我发现我可以很好地填充小部件,我也可以在之后处理信号。希望这会有所帮助。
答案 1 :(得分:1)
索引超出范围意味着您正在尝试访问QList对象的索引,或者可能是不存在的QList的子类的对象。因此,如果您有一个长度为5的QList,并且您尝试访问索引5,则它将超出范围。
此外,您的代码看起来像包含许多不是Qt或C ++标准的类。至少我不认识他们。在不知道这些课程的情况下,很难说这里发生了什么。