Захват событий изменения текста в QComboBox
Я занимаюсь разработкой приложения Qt для Red Hat Linux. Я хочу записать события нажатия клавиши возврата каретки в QComboBox
,
Я подключил слот к сигналу editTextChanged()
который выдается для каждого нажатия клавиши, но не для клавиши ввода.
Почему так? Есть ли другой способ обнаружить возврат каретки?
2 ответа
Я предполагаю, что вы написали слот и подключили его к QComboBox::editTextChanged()
сигнал.
Этот сигнал срабатывает, когда текст изменяется, и Enter не меняет текст, он принимает его. Если вы хотите получить возврат каретки, есть несколько способов, которыми вы можете следовать.
Подкласс
QComboBox
,
OverridekeyPressEvent()
: первый звонокQComboBox::keyPressEvent()
и затем проверьте, нажата ли клавиша Enter. Если это так, испустите сигнал.
Используйте этот подкласс, когда вам нужно. Поиск по продвижению виджетов в QDesigner, если вы не знаете, как.Реализуйте новый класс, который наследует
QObject
, В этом классе переопределитьeventFilter()
: проверьте, является ли событие нажатием клавиши. Если это так, проверьте, является ли это клавишей Enter. Если это так, испустите сигнал.
Затем создайте экземпляр этого класса и установите его в качестве фильтра событий для вашегоQComboBox
, Подключите слот к сигналу этого экземпляра, который вы реализовали.
Если это не ясно, я рекомендую прочитать следующие страницы:
Вы также можете посмотреть в activated( const QString& )
сигнал. Может выдаваться, когда пользователь нажимает ввод.