Muss für mein Studium ein kleines GUI schreiben, in dem ich einen empfangenen Wert mittels Balkenanzeige darstellen will. Ich habe mir eine Funktion geschrieben, welche mir mit Cairo die Balkenanzeige je nach Übergabewert zeichnet. Jetzt steh ich vor dem Problem, dass ich die Anzeige bei Wertänderung aktualisieren will. Wie geht das? Hab jetzt lange gegoogelt und außer der Funktion "queue_draw()" nichts gefunden. Die Funktion hört sich ja viel versprechend an, nur find ich kein Example, wie man sie einsetzt. Kann mir dabei jemand helfen?
Dominik W. schrieb: > Hab jetzt lange gegoogelt und außer der Funktion "queue_draw()" nichts > gefunden. Die Funktion hört sich ja viel versprechend an, nur find ich > kein Example, wie man sie einsetzt. > > Kann mir dabei jemand helfen? Deine Malfunktion sollte an das "expose-event" signal connected werden. Dann wird sie immer aufgerufen, wenn ein Bereich des Widgets wiederhergestellt werden muss. Mit queue_draw() wird dann einfach ein neuer expose-event für die gesamte Widget-Fläche eingequeued und beim Durchlaufen der Mainloop abgearbeitet (d.h. deine Malfunktion wird aufgerufen). Viele Grüße, Simon
Wie verwendet man queue_draw() im Code? Habe vor zwei Tagen mit GTK und gestern mit Cairo angefangen, kenn mich daher noch nicht wirklich gut aus.
Dominik W. schrieb: > Wie verwendet man queue_draw() im Code? > Habe vor zwei Tagen mit GTK und gestern mit Cairo angefangen, kenn mich > daher noch nicht wirklich gut aus. Ich habe im Moment nur ein Python-Beispiel parat, das kannst Du unter http://www.home.unix-ag.org/simon/files/bahnhofsuhr.py runterladen und angucken. Wichtig ist hier, dass die "update_time" Funktion immer wieder mal aufgerufen wird und eigentlich nichts weiter macht, als eben das queue_draw(). Die Uhrzeigerposition, an die der Zeiger letztlich gemalt werden soll, wird dann im expose-handler bestimmt. In C ist das ganze etwas lästiger, weil C keine bequeme Syntax für Methodenaufrufe hat. Da sieht das dann etwa so aus: gtk_widget_queue_draw (GTK_WIDGET (mywidget)); Je nach Datentyp kann man sich das Typechecking-Cast-Makro ("GTK_WIDGET()") auch schenken. Viele Grüße, Simon
Wie es der Zufall so will bin ich gerade auf diese Tutorial gestossen. Mein Fehler war, dass die Funktion gtk_widget_queue_draw(widget); heißt. Manchmal hilft es wirklich eine Nacht drüber zu schlafen. Aber recht herzlichen Dank!
Das koennte dir evtl weiterhelfen. Bin heute damit fertig geworden. Es ist eine Anzeige mit Zeiger. Der Zeiger bewegt sich, wenn sich der Wert aendert. In meiner App laeuft der Zeiger aber nur in eine Richtung - wenn der Wert groesser wird. http://www.mikrocontroller.net/attachment/highlight/96884 Gruesse KidMoritz
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.