Pergunta

Estou desenvolvendo um aplicativo QT no Red Hat Linux. Eu quero capturar eventos de pressionar as teclas de retorno do carro em um QComboBox.

Eu conectei um slot ao sinal editTextChanged() que é emitido para cada imprensa de teclas, mas não para o Tecla Enter.
Por quê então? Existe alguma outra maneira de detectar Retornos de carruagem?

Foi útil?

Solução

Estou assumindo que você escreveu um slot e o conectou a QComboBox::editTextChanged() sinal.
Este sinal é disparado quando o texto muda e Digitar Não altera o texto, ele aceita. Se você quiser capturar Retorno do carro, Existem várias maneiras de seguir.

  1. Subclasse QComboBox.
    Sobrepor keyPressEvent() : primeira chamada QComboBox::keyPressEvent() e então verifique se a tecla pressionada é Digitar. Se for, emite um sinal.
    Use esta subclasse sempre que precisar. Pesquise sobre a promoção de widgets no QDesigner, se você não souber.

  2. Implementar uma nova classe que herda QObject. Nesta classe, substituir eventFilter() : Verifique se o evento é uma chave de tecla. Se for, verifique se é o Digitar chave. Se for, emite um sinal.
    Em seguida, crie uma instância desta classe e defina -a como filtro de eventos para o seu QComboBox. Conecte um slot ao sinal desta instância, que você implementou.

Se isso não estiver claro, recomendo ler as seguintes páginas:

Usando widgets personalizados com o QT Designer

Eventos QT e filtros de eventos

Outras dicas

Você também pode olhar para o activated( const QString& ) sinal. Pode ser emitido quando o usuário acertar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top