2012-03-23 11 views
3

Ich schreibe mit meinen Freunden einen einfachen Foto-Viewer in C++ mit gtkmm. Alles läuft gut, außer dass unsere App sehr schlecht aussieht und völlig anders ist als jede andere GTK + Anwendung auf unseren Linux Desktops. Wenn uns jemand Ratschläge geben könnte, was wir falsch machen, sind wir sehr dankbar.Schlechter Look eines gtkmm Programms

-Code verantwortlich für das Fenster zu schaffen ist hier (der Rest ist im Repository): https://github.com/jjkrol/ZPR/blob/master/src/gui.cpp

Screenshot mit dem Aussehen:
Screenshot with the look http://i39.tinypic.com/ktatc.png

Jede Hilfe apprecieated würde, Dank im Voraus!

+0

In Bezug auf die SCons Leistung sieht die SConstruct ok. Versuchen Sie, die Datei zu kompilieren, die so lange "von Hand" dauert, indem Sie den Kompilierungsbefehl kopieren und einfügen, um ihn zu isolieren, wenn es der Compiler oder die SCONs sind. – Brady

Antwort

5

GTK 3.0 hat eine andere Theming als GTK 2.0. Wahrscheinlich hängt jede Ihrer anderen GTK + Anwendungen noch immer von 2.0 ab, sodass Sie kein Thema für 3.0 festgelegt haben. Finde heraus, wie es z.B. Adwaita in Ihrer Desktop-Umgebung.

Btw: Werfen Sie einen Blick auf Glib::RefPtr<>.

+0

Vielen Dank, es hat funktioniert! Warum schlagen Sie vor, sich 'Glib :: RefPtr <>' anzuschauen? Benutze ich es falsch? –

+2

Ich glaube, er bezieht sich auf das Übergewicht von "neu" in Ihrem Code. Im gtkmm-Code sollten Sie entweder das Feld direkt deklarieren (Gtk :: Box mybox), so dass es keine exposed-Pointer gibt, oder wenn das nicht möglich ist, verwenden Sie Glib :: RefPtr <> (Glib :: RefPtr mybox) Die neuen Zeiger sind schwerer zu lecken. In beiden Fällen werden die Objekte automatisch gelöscht. Gtk :: manage ist auch manchmal nützlich, Sie sollten sich dessen auch bewusst sein. – ergosys

+0

OK, danke für diesen Vorschlag. –