2009-07-01 4 views
1

Ich muss erkennen, wenn der Mauszeiger einen Bereich in einem GtkNotebook verlässt. Normalerweise ist dies mit dem Ereignis motion_notify möglich, aber wenn der Zeiger schnell genug bewegt wird, wird das Ereignis nicht ausgelöst. Da dies ein bestimmter Bereich von Pixeln in einem GtkNotebook ist, ist es nicht möglich, eine GtkEventBox zu verwenden. Was ist der richtige Weg, dies zu tun?Gtk + Mauszeiger Leave-Area-Ereignis

+0

Ich möchte wissen, wenn ich einen Bereich verlasse, nicht die ganze Kontrolle. – c4757p

Antwort

5

Sie sollten enter-notify-event und leave-notify-event Signale verwenden.

+0

Diese funktionieren nicht für mich und auf jeden Fall möchte ich wissen, wenn ich ein Gebiet verlasse, nicht die ganze Kontrolle. – c4757p

1

Sie werden garantiert, Benachrichtigungen zu erhalten und zu hinterlassen, aber nur regelmäßige Bewegungsbenachrichtigungen. Wenn sich der Zeiger schnell genug bewegt, erhalten Sie keine Benachrichtigung für Koordinaten in dem Bereich, der Ihnen wichtig ist.

Die einzige Möglichkeit, diese 100% zu erfassen, besteht darin, eine EventBox (oder ein anderes Fenster-Widget) in Ihre Widget-Hierarchie einzufügen, die diesen Speicherplatz einkapselt. Beachten Sie, dass Sie möglicherweise die Region in Bezug auf mehrere Widgets definieren können.

Wenn Sie keine Benachrichtigungen über ein Widget erhalten oder nicht erhalten, müssen Sie wahrscheinlich die Ereignismaske des Widgets ändern.

myWidget->add_events(Gdk::ENTER_NOTIFY_MASK); 
+0

Wow --- kann nicht glauben, dass ich nie bemerkt habe, dass ich eine Event-Maske ändern müsste, um dies zu tun. Ich wusste nicht, dass es einen gibt. Ich muss mir das ansehen. Vielen Dank – c4757p