ฉันจะป้องกันไม่ให้ GtkAspectFrame เปลืองพื้นที่ได้อย่างไร

<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 ร่วมมือกันได้อย่างไร


person Will    schedule 23.03.2012    source แหล่งที่มา
comment
ฉันไม่รู้จัก GTK+ 3 หรือ GtkBuilder แต่คุณควรขุดไปในทิศทางของ gtk_widget_get_preferred_width_for_height() ไม่รู้ว่าสิ่งนี้สามารถทำได้จาก XML หรือมีวิธีที่ง่ายกว่านี้หรือไม่   -  person doublep    schedule 10.06.2012


คำตอบ (1)


ฉันเชื่อว่า A ควรขยาย=true, fill=true และ B ควรขยาย=false และ fill=true

person robru    schedule 27.06.2012