<interface>
<object class='GtkWindow' id='window'>
<child>
<object class='GtkBox' id='box'>
<property name='orientation'>horizontal</property>
<child>
<object class='GtkAspectFrame' id='aspect_frame'>
<property name='xalign'>0.0</property>
<property name='yalign'>0.0</property>
<child>
<object class='GtkDrawingArea' id='drawing_area_A'>
<property name='expand'>TRUE</property>
</object>
</child>
</object>
</child>
<child>
<!-- widget B goes here -->
</child>
</object>
</child>
</object>
</interface>
Definisi UI GtkBuilder di atas membuat DrawingArea A persegi. Saya ingin ukurannya sebesar mungkin di dalam jendelanya, jadi saya menyetel properti expand
dari A ke TRUE
. Namun, ketika jendela itu sendiri memiliki lebar lebih besar dari tinggi, saya ingin sebuah widget, B, untuk mengisi sisa lebar yang tidak digunakan oleh area gambar. Pada dasarnya, saya menginginkan ini:
+--------------------+
|+-----------++-----+|
|| || ||
|| A || B ||
|| || ||
|| || ||
|+-----------++-----+|
+--------------------+
Tapi saya malah mendapatkan ini (jika B telah expand
disetel ke FALSE
):
+--------------------+
|+-----------+ +-+|
|| | | ||
|| A | |B||
|| | | ||
|| | | ||
|+-----------+ +-+|
+--------------------+
Atau ini (jika B telah expand
disetel ke TRUE
):
+--------------------+
|+-------++---------+|
|| || ||
|| A || B ||
|| || ||
|+-------+| ||
| +---------+|
+--------------------+
Bagaimana caranya agar GTK mau bekerja sama?
gtk_widget_get_preferred_width_for_height()
. Tidak tahu apakah ini bisa dilakukan dari XML atau ada cara yang lebih sederhana. - person doublep   schedule 10.06.2012