<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>
คำจำกัดความ UI ของ GtkBuilder จะสร้าง DrawingArea สี่เหลี่ยมจัตุรัส A ฉันต้องการให้มันมีขนาดใหญ่ที่สุดเท่าที่เป็นไปได้ภายในหน้าต่าง ดังนั้นฉันจึงตั้งค่าคุณสมบัติ expand
ของ A เป็น TRUE
อย่างไรก็ตาม เมื่อหน้าต่างมีความกว้างมากกว่าความสูง ฉันต้องการให้วิดเจ็ต B เติมความกว้างที่เหลือซึ่งไม่ได้ใช้โดยพื้นที่วาดภาพ โดยพื้นฐานแล้วฉันต้องการสิ่งนี้:
+--------------------+
|+-----------++-----+|
|| || ||
|| A || B ||
|| || ||
|| || ||
|+-----------++-----+|
+--------------------+
แต่ฉันเข้าใจสิ่งนี้แทน (หาก B ตั้งค่า expand
เป็น FALSE
):
+--------------------+
|+-----------+ +-+|
|| | | ||
|| A | |B||
|| | | ||
|| | | ||
|+-----------+ +-+|
+--------------------+
หรือสิ่งนี้ (ถ้า B ตั้งค่า expand
เป็น TRUE
):
+--------------------+
|+-------++---------+|
|| || ||
|| A || B ||
|| || ||
|+-------+| ||
| +---------+|
+--------------------+
ฉันจะทำให้ GTK ร่วมมือกันได้อย่างไร
gtk_widget_get_preferred_width_for_height()
ไม่รู้ว่าสิ่งนี้สามารถทำได้จาก XML หรือมีวิธีที่ง่ายกว่านี้หรือไม่ - person doublep   schedule 10.06.2012