Вопрос

Я разрабатываю приложение Qt для Red Hat Linux.Я хочу фиксировать события нажатия клавиши возврата каретки в QComboBox.

Я подключил слот к сигналу editTextChanged() который выдается при каждом нажатии клавиши, но не для Клавиша Ввода.
Почему так?Есть ли какой-нибудь другой способ обнаружить Возврат каретки?

Это было полезно?

Решение

Я предполагаю, что вы написали слот и подключили его к QComboBox::editTextChanged() сигнал.
Этот сигнал срабатывает при изменении текста и Войти не изменяет текст, он принимает его.Если вы хотите запечатлеть Возврат каретки, есть несколько способов, которым вы можете следовать.

  1. Подкласс QComboBox.
    Переопределение keyPressEvent() :первый звонок QComboBox::keyPressEvent() а затем проверьте, является ли нажатая клавиша Войти.Если это так, подайте сигнал.
    Используйте этот подкласс всякий раз, когда вам нужно.Найдите информацию о продвижении виджетов в QDesigner, если вы не знаете, как это сделать.

  2. Реализуйте новый класс, который наследует QObject.В этом классе переопределите eventFilter() :проверьте, является ли событие нажатием клавиши.Если это так, проверьте, является ли это Войти Клавиша.Если это так, подайте сигнал.
    Затем создайте экземпляр этого класса и установите его в качестве фильтра событий для вашего QComboBox.Подключите слот к сигналу этого экземпляра, который вы реализовали.

Если это непонятно, я рекомендую прочитать следующие страницы:

Использование пользовательских виджетов с помощью Qt designer

События Qt и фильтры событий

Другие советы

Вы также могли бы заглянуть в activated( const QString& ) сигнал.Он может быть выдан, когда пользователь нажимает enter.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top