1

处理一个有 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其余的comboBoxes 构建其余的。任何帮助将不胜感激。

4

1 回答 1

1

Qt 5.5 文档

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


实际上,出于某种原因,它正在删除索引以及它之前的每个索引。知道为什么吗?

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

于 2016-01-13T21:37:34.507 回答