2012-03-23 20 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> 

El GtkBuilder definición de interfaz de usuario anterior crea una plaza de Dibujo Un . Quiero que sea lo más grande posible dentro de su ventana, así que establecí la propiedad expand de A en TRUE. Sin embargo, cuando la ventana en sí tiene un ancho mayor que la altura, quiero un widget, B, para llenar el resto del ancho que no utiliza el área de dibujo. Básicamente, quiero esto:¿Cómo evito que un GtkAspectFrame pierda espacio?

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

Pero conseguir esto en su lugar (si B tiene expand conjunto de FALSE):

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

O esto (si B tiene expand conjunto de TRUE) :

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

¿Cómo puedo obtener GTK to co ¿funcionar?

+0

No conozco GTK + 3 o GtkBuilder, pero probablemente deberías cavar en la dirección de 'gtk_widget_get_preferred_width_for_height()'. No tengo idea si esto es factible desde XML o si hay una manera más simple. – doublep

Respuesta

0

Creo que A debe ser expand = true, fill = true, y B debe ser expand = false y fill = true.

Cuestiones relacionadas