Pergunta

Como adicionar um evento ouvinte clique para meu controle personalizado feito com wxWidgets? Os usos de controle personalizados wxWindow como base. Na lista de eventos que vejo

wxEVT_LEFT_DOWN 
wxEVT_LEFT_UP 
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP 
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN 
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL 

Mas não há wxEVT_LEFT_CLICK ou similar.

Foi útil?

Solução

Normalmente, não existe um "clique" evento (e no caso de wxWidgets - não há ). A ação de clicar é quebrado em suas duas partes: do mouse pressionado e mouse para cima. Normalmente o que você pensa de como um evento de "clique esquerdo" é realmente tratado em um "deixada" do evento.

Experimente:

  • Passe o mouse sobre um botão (como o botão "Adicionar comentário" desta página)
  • Clique no botão esquerdo do mouse para baixo e segure
  • Mova o mouse para fora do botão enquanto pressiona
  • Solte o botão esquerdo do mouse
  • Não acontece nada!

Este tempo:

  • Passe o mouse sobre o mesmo botão
  • Clique no botão esquerdo do mouse para baixo e segure
  • Solte o botão esquerdo do mouse
  • O "clique" ação que você espera é acionado pelo evento up!

Outras dicas

Em primeiro lugar eu recomendo herdando de wxControl não wxWindow, wxControl é projetado para essa finalidade exata e você são menos propensos a encontrar-se lutando contra o sistema. Quando eu olho para um controle que estou construindo em minha própria wxWidgets aplicativo, vejo que meu manipulador de clique é ligado a wxEVT_LEFT_DOWN. Olhando em minha cópia da Programação Cruz Platform GUI com wxWidgets Eu posso ver uma lista de todos wxMouseEvents, e não há wxEVT_LEFT_CLICK. Eu sugeriria wxEVT_LEFT_DOWN é o evento para uso.

Agora, depois de postar Eu li a resposta de Burly e eu concordo com ele, wxWidgets ofertas os eventos de nível mais baixos e que lhe dá o máximo de controle da interface do usuário que você construir para seus usuários.

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