2D-Objekte dynamisch erstellen und mit Events verknüpfen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Ruler hat geschrieben: [...]
Das hast Du richtig vermutet, allerdings sollen die Dokumente wirklich nur als Punkte erscheinen, und die sind nun auch so wie sie sein sollen. Allerdings möchte ich andere Aktivitäten (Einnahmedauer von Medikamenten) als Zeitspanne mit HIlfe von Linien zeichnen. Dort ist mir nicht klar, wie ich Events "holen" kann; also wenn ich z.B. mit der Maus über einer mit DrawLine gezeichneten Linie bin. Wäre Klasse wenn sowas auch funktionieren würde. Die Frage ist, an was ich welchen Event binden soll?
Ich würde einfach beim Resizen die Koordinaten der Striche und Punkte berechnen und in einer Liste (z.B. als wx.Rect) speichern. Im Paint-Handler kann man dann anhand dieser Liste das Diagramm erstellen. Dann noch einen Handler für wx.EVT_MOTION (Details in der Doku) geschrieben, in dem anhand der Mausposition in der Liste nachgesehen wird, ob sich der Mauszeiger über einem der grafischen Symbole befindet.
Ruler hat geschrieben: Dann habe ich noch weitere Fragen... sorry aber ich hoffe ich mache dann weniger Fehler... Ich habe eine Klasse mit meinen Berechnungen, welche von einer anderen erbt (nur der Konstruktor):
[...]
Wenn ich nun eine OnPaint-Methode zum zeichnen verwenden, soll diese in der Klasse mit den Panels oder in der "Logik"-Klasse ausgeführt werden? Der Untscherschied leuchtet mir nicht ein.
Trenne auf jeden Fall die GUI von der Programmlogik. Versuche, das Objektmodell so zu gestalten, dass es für sich alleine lauffähig (d.h. nicht abhängig von der GUI) ist und auch so getestet werden kann. Wenn du Logik und GUI verzahnst schaffst du dir nur Probleme. Das ist deine Design-Entscheidung; technisch gesehen kannst deine Event-Handler unterbringen, wo du willst, auch in Klassen, die mit deiner Application gar nichts zu tun haben.
Ruler hat geschrieben: Was mir zudem noch aufgefallen ist: wenn ich den EVT_PAINT binde, werden bei mir Tooltips nicht angezeigt. Kommentiere ich den entsprechenden Aufruf aus (=OnPaint wird nicht mehr ausgeführt), erscheinen die Tooltips. Hängt das irgendwie zusammen?
Kannst du das auf ein lauffähiges Minimalbeispiel reduzieren? Dieses Verhalten kann ich bei mir (Ubuntu, Python2.6, wxWidgets2.8 ) nicht bestätigen.

Gruß
Norbert
Antworten