если ты имеешь в виду как перемещать строку из истории наверх, то я делаю так:
C++ (Qt)
// move the search string to the top of the last searches list if it is present there and not on the top
if (ui->searchComboBox->currentIndex() > 0)
{
QStringList history;
for (int i = 0; i < ui->searchComboBox->count(); ++i)
history += ui->searchComboBox->itemText(i);
history.move(ui->searchComboBox->currentIndex(), 0);
ui->searchComboBox->clear();
ui->searchComboBox->addItems(history);
}
а зачем отлавливать событие фокуса я не совсем понял.
На самом деле, я тоже не до конца понимаю, а нужны ли тут события фокуса.
Цель первоначально была такая:
1. иметь список всех ранее введенных пользователем значений
2. в показываемом списке не должно быть повтора каррентТекста
3. предполагается, что пользовательские данные хранятся в самом комбобоксе и при необходимости получить "активное значение", то оно считывается напрямую через cmb->currentText().
Сейчас посмотрел, как работают другие комбобоксы с сохранением состояний, и оказалось, что добавляются не "введенные", а только "использованные" строчки. Проверок на совпадение с активным текстом нету, как и у Вас.
Спасибо за подсказку)