Nutzung von libcairo in pvbrowser
Zurück Inhalt Vor

mask1_slots

mask_slot1.png
DATA, slotInit(), slotNullEvent()

Die slot Funktionen der Maske machen folgendes:

In slotInit() wird die Tabelle mit der Beschreibung unserer cairo Widgets eingelesen. In slotNullEvent(), welches zyklisch aufgerufen wird, wird mit d->cairo.sendFileToQDraw() dafür gesorgt, dass die Grafik auf dem QDraw Objekt draw1 dargestellt wird. Das wird aber nur gemacht, wenn sich die Modifikationszeit der Datei geändert hat. Mit tloop.lock() / tloop.unlock() wird sichergestellt, dass sich die Threads "Loop" und "pvMain" synchronisieren, es sichergestellt ist, dass nur vollständige Grafiken verarbeitet werden.

In slotMousePressedEvent() / slotMouseReleasedEvent() wird die von pvbrowser Client kommende Mausposition genommen und mit pvCairoWidget::hitTest() bestimmt welche Tabellenzeile (row) angeclickt wurde.

mask_slot2.png
slotMousePressedEvent() Mit loopfifo.printf() wird das Mausereignis über den rlFifo an den "Loop" Thread gesendet, wo darauf reagiert werden kann.
mask_slot3.png
slotMouseReleasedEvent() Hier wird das Mausereignis auch wieder an den "Loop" Thread geschickt und die Mausform, welche der Benutzer sieht, wieder zurückgesetzt.

Zurück Inhalt Vor