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