[erl.] gtk/gtkmm widgets in box nur teilweise gleichgroß?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

[erl.] gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von GeoW » 10.08.2012 21:49:51

Ich habe zum Beispiel eine horizontale Box, in die ich drei Widgets packe (WidgetLinks, WidgetMitte und WidgetRechts). Nun möchte ich dass WidgetLinks und WidgetRechts gleichgroß sind und WidgetMitte nur so groß ist, wie es Platz braucht. Damit WidgetMitte nicht automatisch größer wird, gebe ich ihm den Parameter PACK_SHRINK mit. Wenn ich nun bei der HBox homogeneous=true angebe, werden die Widgets natürlich gleichgroß. Aber leider wird auch für WidgetMitte gleichviel Platz wie für WidgetLinks und WidgetRechts bereit gestellt.

Weiß jemand, wie man es hin bekommt, dass bei 3 nur die beiden aüßeren Widgets gleichgroß sind?
Gruß
Zuletzt geändert von GeoW am 13.08.2012 19:03:38, insgesamt 1-mal geändert.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von brummer » 12.08.2012 10:36:22

Das kannst du z.b. über propertys einstellen, setze für die äußeren widgets "width-request" auf 1

Code: Alles auswählen

g_object_set(G_OBJECT(button1),"width-request",1,NULL);
g_object_set(G_OBJECT(button2),"width-request",1,NULL);
lasse das mittlere auf -1 (default), füge die widgets ein mit

Code: Alles auswählen

gtk_box_pack_start (GTK_BOX(box), button1, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX(box), button, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(box), button2, TRUE, TRUE, 0);

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von GeoW » 12.08.2012 19:00:22

Erst mal Danke. Damit funktioniert es, dass die beiden äußeren Widgets gleich groß sind. Der Wert 1 für width-request hat aber den Nachteil, dass man die Widgets jetzt bis auf 1 Pixel zusammen schieben kann. Ich weiß, muss ich natürlich eine Wert größer 1 nehmen. Wäre halt schön, wenn die Mindestbreite sich, wie in den anderen Modi auch, automatisch am Inhalt orientieren/einstellen würde. Wichtig war dass sie gleichgroß sind.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von brummer » 13.08.2012 06:35:08

Naja, du kannst ja den size-request vorher auslessen und dann den größeren wert für beide setzen, packst du das ganze in ein configure event callback, automatisiert sich das auch.

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von GeoW » 13.08.2012 15:43:35

Wenn ich size-request auslese bekomme ich immer den Standardwert -1, solange ich ihn nicht ändere.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von brummer » 13.08.2012 16:24:01

Um den tatsächlichen wert zu erhalten musst du size_request vom widget auslesen, nicht den property wert.
gtk2

Code: Alles auswählen

GtkRequisition requisition;
 gtk_widget_size_request(GTK_WIDGET(button),&requisition);
 fprintf(stdout,"%i",requisition.width);
gtk3

Code: Alles auswählen

GtkRequisition minrequisition;
 gtk_widget_get_preferred_size(GTK_WIDGET(button), &minrequisition, NULL );
 fprintf(stdout,"%i",minrequisition.width);
Wen du das property auf nicht -1 gesetzt hast, must du, um den Original wert zu erhalten, das property wieder auf -1 setzen und danach den wert mit gtk_widget_size_request() oder bei gtk3 eben mit gtk_widget_get_preferred_size() auslesen.

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: gtk/gtkmm widgets in box nur teilweise gleichgroß?

Beitrag von GeoW » 13.08.2012 19:02:23

Super!!! Jetzt funktioniert alles so wie ich es mir vorstelle. Der Trick ist, man muss auch die richtige Funktion nehmen. Ich benutze Gtkmm 2, leider noch in der aktuellen Debianversion. Die Doku auf den gtkmm-Seiten ist ja schon für Gtkmm 3. Die einzigste Funktion mit size_request zum Abfragen, die ich fand, war get_size_request(). Naja, und die liefert natürlich nicht den gewünschten Wert. Aber mit ein wenig google fand ich heraus, dass es bei Gtkmm 2 auch die Funktion size_request() ohne get gibt.
Also nochmal Danke.

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: [erl.] gtk/gtkmm widgets in box nur teilweise gleichgroß

Beitrag von brummer » 13.08.2012 20:06:24

Sehr schön. :)

Zur Dokumentation von gtkmm 2.24 kommst du übrigens wenn du in der Browser adress zeile "unstable" mit "2.24" ersetzt.
Also zb. aus
http://developer.gnome.org/gtkmm/unstab ... dgets.html
machst du
http://developer.gnome.org/gtkmm/2.24/g ... dgets.html

nur die main docu seite ist nicht mehr auf dem server. :wink:

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: [erl.] gtk/gtkmm widgets in box nur teilweise gleichgroß

Beitrag von GeoW » 13.08.2012 21:18:00

Cool, danke.
Vielleicht schaffen sie es ja wheezy nächstes Jahr stable zu machen, dann hat sich gtkmm 2 für mich auch erledigt.

Antworten