La captura de eventos de cambio de texto en un QComboBox
Pregunta
Estoy desarrollando una aplicación Qt en Red Hat Linux. Quiero capturar retorno de carro eventos de pulsación de teclas en un QComboBox
.
He conectado una ranura a la editTextChanged()
señal que se emite por cada pulsación de tecla, pero no para el Enter .
¿Porque? ¿Hay alguna otra manera de detectar retornos de carro
Solución
Estoy asumiendo que escribió una ranura y conectado a QComboBox::editTextChanged()
señal.
Esta señal se activa cuando el texto cambia y Intro no cambia el texto, se acepta. Si desea capturar Retorno de carro , hay un número de maneras en que puede seguir.
-
QComboBox
Subclase.
AnularkeyPressEvent()
: primeroQComboBox::keyPressEvent()
llamada y luego comprobar si la tecla pulsada es Intro . Si es así, emitir una señal.
Utilice esta subclase cuando lo necesite. Buscar sobre la promoción de widgets en QDesigner si no sabe cómo hacerlo. -
Implementar una nueva clase que hereda
QObject
. En esta clase, anulareventFilter()
: comprobar si el evento es una pulsación de tecla. Si es así, comprobar si es la tecla Intro . Si es así, emitir una señal.
A continuación, cree una instancia de esta clase y configurarlo como filtro de eventos a suQComboBox
. Conectar una ranura a la señal de este caso, que ha implementado.
Si estos no son claras, recomiendo la lectura de las páginas siguientes:
Otros consejos
También podría mirar en la señal activated( const QString& )
. Podría ser emitida cuando los accesos de los usuarios entran.