2012-11-23 4 views
0

타이머를 사용하여 슬롯 checkBookings()을 반복적으로 호출합니다. 프로그램을 컴파일하고 실행할 수 있지만 위의 FOR 루프를 실행할 때 충돌이 발생합니다.QList 인덱스가 범위를 벗어났습니다.

Error:"ASSERT failure in QList::at: "index out of range", file ../../../../Qt/2010.05/qt/include/QtCore/../../src/corelib/tools/qlist.h, line 455 Invalid parameter passed to C runtime function. Invalid parameter passed to C runtime function."

내 코드는 다음과 같습니다

timer = new QTimer(); 
connect(timer,SIGNAL(timeout()),this,SLOT(checkBookings())); 
timer->start(500000); 

void Canvas::checkBookings() 
{ 

QString dateStr; 

for(int i= 0;i<=qlist.count();i++) 
    { 
     dateStr = qList.at(i).at(6); 
    } 

} 
+0

이가 대답 할 될 수 없습니다. – cgmb

답변

5

루프에 대한 귀하의 <로 = <를 교체합니다. 이처럼 :

for(int i= 0;i<qlist.count();i++) 
{ 
    dateStr = qList.at(i).at(6); 
} 

이유는 qList.count (이다)는 지금까지 qList.at (qlist.count())

를 사용하려고하지 않도록 목록에있는 항목의 수입니다 편집 : 에 의해 < =함으로써 루프에 대한 마지막 회 반복 그 기억 = qlist.count(). 코드가 루프에서 문을 실행 그럼 때 본질적으로이 작업을 수행합니다 : 당신이 변수 qlist이 무엇인지 및 요소를 추가하거나 제거하는 방법을 보여 않는

dateStr = qList.at(qList.count()).at(6); 
+0

또 다시, 아마도 그것은 답할 수 있습니다. 좋은 캐치. – cgmb

관련 문제