1
在6个组合框具有相关数据的程序上工作时,一旦选择了索引,其他人就不应该选择它,因此我只是将其从其他索引中的索引中删除,但实际上它会删除索引以及出于某种原因之前的每个索引。任何想法为什么?Qt 5.5使用C++,从ComboBox中删除项目以及删除项目前的所有项目
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是需要调整和是“过度去除”索引的其他。一旦我得到第一个正确的工作,应该很容易为comboBox
ES的其余部分构建indexChanged
的其余部分。任何帮助将不胜感激。
我明白了,所以我的for循环在结尾引起更多的触发器,然后索引正在改变。这就说得通了。现在想想一个新的方法来做到这一点。 – StackAttack
@StackAttack我需要更多地了解所有信号和插槽如何连接,但有一个['blockSignals'](http://doc.qt.io/qt-5/qobject.html#blockSignals )每个'QObject'上的函数都可以被启用和禁用,以处理类似的情况。 –
我设法通过读取更多的信息 - “如果组合框的当前项目发生变化,会发出两个信号currentIndexChanged()和activated()。currentIndexChanged()总是发出,无论这些变化是以编程方式完成还是通过用户交互,而激活()仅在更改是由用户交互引起时才发出。“ - 所以解决方案是简单地使用activated()而不是currentIndexChanged()和wala,算法将继续前进。谢谢你的帮助! – StackAttack