yea*_*amf 0 indexing qt qlist qtimer
使用计时器我checkBookings()反复调用插槽.我能够编译并运行程序,但在执行上述FOR循环时崩溃了.
错误:"在QList :: at中ASSERT失败:"索引超出范围",文件../../../../Qt/2010.05/qt/include/QtCore/../../src/corelib /tools/qlist.h,第455行传递给C运行时函数的参数无效.传递给C运行时函数的参数无效."
我的代码是:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在for循环中替换<= with <.像这样:
for(int i= 0;i<qlist.count();i++)
{
dateStr = qList.at(i).at(6);
}
Run Code Online (Sandbox Code Playgroud)
原因是qList.count()是列表中的项目数,因此您不想尝试使用qList.at(qlist.count())
编辑:通过在for循环中使用<=,记住for循环的最后一次迭代i = qlist.count().那么当代码在循环中执行语句时,它实际上是这样做的:
dateStr = qList.at(qList.count()).at(6);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3317 次 |
| 最近记录: |