在Qt中添加到空的comboBox时出错

Mic*_*ael 3 qt combobox

我使用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。

希望如果有人绊倒了,这将对他们有帮助!