Captura de eventos de mudança de texto em um qcombobox
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?
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.
Subclasse
QComboBox
.
SobreporkeyPressEvent()
: primeira chamadaQComboBox::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.Implementar uma nova classe que herda
QObject
. Nesta classe, substituireventFilter()
: 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 seuQComboBox
. Conecte um slot ao sinal desta instância, que você implementou.
Se isso não estiver claro, recomendo ler as seguintes páginas:
Outras dicas
Você também pode olhar para o activated( const QString& )
sinal. Pode ser emitido quando o usuário acertar.