В таком случае надо работать не с QComboBox, а с его вьюхой.
Можно повесить фильтр событий на уже имеющуюся вьюху, можно написать свою и установить QComboBox:
C++ (Qt)
void QComboBox::setView ( QAbstractItemView * itemView )
QAbstractItemView * QComboBox::view () const
Я так полагаю надо сигналы блокировать от вьюхи, чтобы в QComboBox не менялось значение.
Вы совершенно правы. Как вы понимаете, я не хочу найти просто решение, я хочу найти простое решение. Т.е. может я не доглядел эту примитивную возможность? Однако нет, она отсутствует. С вьюхой ещё сложнее. Стояла задача (QAbstractItemView) запретить двигаться по вьюхе при определенных условиях (классическое передвижение по базе данных. Если текущую строку внесли не верно, либо её дорабатывайте, либо отменяйте. Но вы не можете сдвинутся с неё, пока она не удовлетворяет условиям). Чтобы это реализовать - это наследование от вьюхи с кучей копипасты с иходников - т.е. фильтр событий, когда мы фильтруем все события и реализуем их заново (мыши, клавы). Такую простыню вставлять. Другими словами этой возможности у view нету. Если я её проморгал, как в контексте комбобокса, так и в контексте view, ткните....
Вообщем-то задачка классическая про ComboBox. Я, конечно, реализовал её через события (мы меняем, потом проверяем, потом возвращаем. При этом блокируем сообщения, чтобы не было цикличности).
Может поясню для чего: классика - таблицы главная - подчиненная. Представьте QComboBox, в котором Вы выбираете значения, а в форме изменяется текст. Вот выбрали что-то - появился текст, который мы можем редактировать. Вот мы его отредактировали. И выбираем другое значение Combobox. И вот незадача, что делать с текстом. Записать? Отменить? А вдруг при записи ошибка (не соответствует критериям). Поэтому как бы всплывает диалог и спрашивает - что делать, данные то пропадут...