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

¿Fue útil?

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.

  1. QComboBox Subclase.
    Anular keyPressEvent(): primero QComboBox::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.

  2. Implementar una nueva clase que hereda QObject. En esta clase, anular eventFilter(): 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 su QComboBox. 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:

Uso de widgets personalizados con el diseñador Qt

Qt Eventos y filtros de sucesos

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top