我使用Qt 5.2.0(MSVC 2010)。
我在Qt中的ComboBox中添加了表单。
然后我想用数字填充它:
for (i = 0; i < n; i++){
ui->tableCombo->addItem(QString::number(i));
}
Run Code Online (Sandbox Code Playgroud)
当我在表单中添加第一个元素时,它会成功添加数字。但是,当我将其保留为空时,会引发错误:
QVector :: operator []中的ASSERT失败:“索引超出范围”
调试器显示此行中发生错误。而且没有QVector。
添加qDebug()之后。
qDebug() << "readFileToStringList: msg10";
for (i = 0; i < n; i++){
qDebug() << "readFileToStringList: msg20 i = " << i;
ui->tableCombo->addItem(QString::number(i+1));
qDebug() << "readFileToStringList: msg30";
}
qDebug() << "readFileToStringList: msg40";
Run Code Online (Sandbox Code Playgroud)
我得到相同的结果
readFileToStringList: msg10
readFileToStringList: msg20 i = 0
ASSERT failure in QVector<T>::operator[]: "index out of range", file C:\Qt\Qt5.2.0\5.2.0\mingw48_32\include/QtCore/qvector.h, line 369
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了这个确切的问题,几个小时都无法解决。我意识到:: addItem()触发了indexChanged(int)信号,该信号已经连接到一个导致容器中超出范围错误的函数。
我想说这也可能是问题所在,但是我确定从那以后OP一直在发展。对我来说,在插入新项目时将调用indexChanged信号并不是很直观,因为它实际上并没有更改currentIndex。
希望如果有人绊倒了,这将对他们有帮助!