Qt Problem ze zdarzeniem QEvent::MouseMove
Ostatnio zmodyfikowano 2017-09-06 13:30
dlakin95 Temat założony przez niniejszego użytkownika |
Qt Problem ze zdarzeniem QEvent::MouseMove » 2017-09-06 10:53:35 Witam, mam problem z przechwytywaniem zdarzenia z pomocą EventFilter. Program oczywiście działa, jednak mam mały problem. Wykonałem sobie mały testowy program dla zapoznania się z przechwytywaniem zdarzeń. Polega on na tym, że mam dwa napisy po na których najechaniu zmienia się ich tekst na "Jest mysz". W momencie, gdy jestem poza napisem mają się pojawić domyślne teksty. Informacje o tym, że mysz znajduję się w obrębie napisu dostarcza mi QEvent::MouseMove. Problem jest jednak taki, że po najechaniu napis się zmienia, ale zostaje do momentu wciśnięcia przycisku na oknie głównym. Mógłby mi to ktoś wyjaśnić? PS. Przy okazji jestem tu nowy i wybaczcie, ale nie wiem wrzucić mój kod w ramkę, dlatego wrzucę póki co "goły". bool MainWindowClick::eventFilter( QObject * obj, QEvent * ev ) { switch(( uint ) ev->type() ) { case( uint ) QEvent::MouseMove : if( obj == static_cast < MainAppWindow *>( parent )->getInfoLabel() ) static_cast < MainAppWindow *>( parent )->getInfoLabel()->setText( tr( "Jest mysz" ) ); else { if( obj == static_cast < MainAppWindow *>( parent )->getChooseInfo() ) static_cast < MainAppWindow *>( parent )->getChooseInfo()->setText( tr( "Jest mysz" ) ); else { if( obj == parent ) static_cast < MainAppWindow *>( parent )->getInfoLabel()->setText( INFO_TEXT ); static_cast < MainAppWindow *>( parent )->getChooseInfo()->setText( tr( "Wybierz:" ) ); } } return true; default: return QObject::eventFilter( obj, ev ); } }
|
|
Monika90 |
» 2017-09-06 11:24:08 Raczej powinieneś obsługiwać QEvent::Enter i QEvent::Leave.
Kod C++ wstawiamy między znacznikami [cpp] [/cpp] |
|
dlakin95 Temat założony przez niniejszego użytkownika |
» 2017-09-06 13:30:31 Dzięki. Przy okazji zrozumiałem, że wykonując ruchy myszą w napisie wyłapuję też zdarzenie w oknie głównym dlatego nie aktualizowało po wyjściu. |
|
« 1 » |