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