Ich arbeite unter Linux Mint 19, basiert auf Ubuntu 18.04 (bionic), und versuche mich an eigenen Grafiken mit GTK3 bzw. gtkmm3. Das funktioniert eigentlich recht gut über das Ausführen (und Modifizieren) der Beispielprogramme aus den Beschreibungen (z.B. http://transit.iut2.upmf-grenoble.fr/doc/gtkmm-3.0/tutorial/html/index.html).
Allerdings habe ich das ganze Wochenende vergeblich versucht, eine eigene Grafik über Gtk::DrawingArea zu erzeugen, das Beispiel aus der o.g. Quelle zeigte nichts. Über das Debuggen (ich arbeite mit Eclipse) habe ich schließlich herausgefunden, dass die on_draw-Methode nicht aufgerufen wird.
An dem entsprechenden Beispiel aus gtkmm4 (ist noch nicht über die Softwareverwaltung verfügbar) habe ich gesehen, dass dort im Konstruktor der eigenen Grafik die on_draw-Methode mit set_draw_func(sigc::mem_fun(*this, &MyArea::on_draw)) an die Signal-Umgebung angebunden wird (https://developer-old.gnome.org/gtkmm-tutorial/unstable/gtkmm-tutorial.html#chapter-drawingarea). Allerdings gibt es diese Funktion nicht in gtkmm3. Ich habe anstelle in meinem Konstruktor die Anbindung mit
signal_draw().connect(sigc::mem_fun(*this, &MyArea::on_draw));
vorgenommen. Und jetzt funktioniert das Beispiel. Und weil ich wegen dieser "Kleinigkeit" (Fehler im Beispiel? Oder nur bei Linux/X-Windows erforderlich?) das ganze Wochenende beschäftigt war, habe ich diesen Beitrag erstellt. Für diejenigen, die deswegen auch erfolglos mit eigener Grafik sind und auch nach stundenlangem Recherchieren im Internet keine Lösung gefunden haben. 😀
Bearbeitet von klm:
Distro entfernt