2012-03-23 6 views
8
<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> 

उपरोक्त GtkBuilder यूआई परिभाषा एक वर्ग बनाता है DrawingArea । मैं इसे अपनी खिड़की के भीतर जितना संभव हो उतना बड़ा होना चाहता हूं, इसलिए मैंने से TRUE की संपत्ति सेट की है। हालांकि, जब खिड़की की ऊंचाई की तुलना में अधिक चौड़ाई होती है, तो मुझे ड्राइंग क्षेत्र द्वारा उपयोग की जाने वाली शेष चौड़ाई को भरने के लिए विजेट, बी चाहिए। असल में, मैं यह चाहता हूँ:मैं एक जीटीकेएस्पेक्ट फ्रेम को अंतरिक्ष बर्बाद करने से कैसे रोकूं?

+--------------------+ 
|+-----------++-----+| 
||   ||  || 
||  A  || B || 
||   ||  || 
||   ||  || 
|+-----------++-----+| 
+--------------------+ 

लेकिन मैं बजाय इस मिल (यदि बीFALSE करने के लिए expand सेट है):

+--------------------+ 
|+-----------+ +-+| 
||   | | || 
||  A  | |B|| 
||   | | || 
||   | | || 
|+-----------+ +-+| 
+--------------------+ 

या यह (बीTRUE करने के लिए expand सेट है) :

+--------------------+ 
|+-------++---------+| 
||  ||   || 
|| A || B || 
||  ||   || 
|+-------+|   || 
|   +---------+| 
+--------------------+ 

मैं जीटीके को सह कैसे प्राप्त करूं संचालित?

+0

मुझे जीटीके +3 या जीटीकेबिल्डर नहीं पता है, लेकिन आपको शायद 'gtk_widget_get_preferred_width_for_height() 'की दिशा में खोदना चाहिए। कोई विचार नहीं है कि यह एक्सएमएल से करने योग्य है या यदि कोई आसान तरीका है। – doublep

उत्तर

0

मेरा मानना ​​है कि विस्तारित होना चाहिए = सत्य, fill = true, और बी का विस्तार होना चाहिए = झूठा और भरना = सत्य।

संबंधित मुद्दे