Qt 5.5使用C ++,从ComboBox删除和项目也删除项目之前的所有项目

时间:2016-01-13 21:21:29

标签: c++ qt combobox qt5.5

在6个组合框具有相关数据的程序上工作,一旦选择了索引,其他人就不能选择它,因此我只是将其从索引中删除其他的,但实际上它是由于某种原因删除索引加上之前的每个索引。知道为什么吗?

void AssignStatsWindow::on_comboBox_currentIndexChanged()
{
    ui->comboBox_2->removeItem(ui->comboBox->currentIndex());  //these should remove 1 index but removes many
    ui->comboBox_3->removeItem(ui->comboBox->currentIndex());
    ui->comboBox_4->removeItem(ui->comboBox->currentIndex());
    ui->comboBox_5->removeItem(ui->comboBox->currentIndex());
    ui->comboBox_6->removeItem(ui->comboBox->currentIndex());

    for (int i = ui->comboBox->count(); i >= 0; --i) //removes all but newly selected index, seems to be working fine
    {
        if (i != ui->comboBox->currentIndex()) {
            ui->comboBox->removeItem(i);
        }
    }
}

comboBox是具有indexChanged并触发代码的人,comboBox_2到6是其他需要调整并且过度删除的人。索引。一旦我得到第一个正常工作,应该很容易为indexChanged es的其余部分构建剩余的comboBox。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

来自Qt 5.5 documentation

  

从组合框中删除给定索引处的项目。如果删除索引,这将更新当前索引。

  

实际上,由于某种原因,它会删除索引加上之前的每个索引。知道为什么吗?

似乎删除项目的工作是在响应currentIndexChanged信号的插槽中执行的。上述文档说明删除项目将更改组合框的当前索引,这将导致多次触发插槽,从而删除许多项目。