Работа с программой, в которой 6 combobox имеют относительные данные, после выбора индекса другие не должны выбирать, поэтому я просто удаляю его из индекса на другие, но на практике он удаляет индекс и каждый индекс перед ним по какой-то причине. Любая идея почему?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 являются другими, которые необходимо отрегулировать и являются «более удаляющим» индексами. Как только я получу этот первый, правильно работающий, нужно легко собрать оставшуюся часть indexChanged
для остальной части comboBox
. Любая помощь будет принята с благодарностью.
Я вижу, поэтому мой цикл for в конце вызывает более триггеры, так как индекс меняется. В этом есть смысл. Пора подумать о новом способе этого. – StackAttack
@StackAttack Мне нужно знать немного больше о том, как все сигналы и слоты подключены, но есть ['blockSignals'] (http://doc.qt.io/qt-5/qobject.html#blockSignals) на каждом 'QObject', который может быть включен и отключен для обработки ситуаций, подобных этому. –
Мне удалось понять это, прочитав немного больше: «При изменении текущего элемента combobox происходит следующее: currentIndexChanged() и активировано(). CurrentIndexChanged() всегда испускается независимо от того, было ли изменение выполнено программно или путем взаимодействия пользователя, а активированный() выдается только тогда, когда изменение вызвано взаимодействием пользователя ». - Таким образом, решение состояло в том, чтобы просто использовать active() вместо currentIndexChanged() и wala, алго будет работать в будущем. Спасибо за вашу помощь! – StackAttack