【问题标题】:How do I prevent a GtkAspectFrame from wasting space?如何防止 GtkAspectFrame 浪费空间?
【发布时间】:2012-04-07 19:46:53
【问题描述】:
<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 UI 定义创建了一个正方形的DrawingAreaA。我希望它在其窗口内尽可能大,因此我将 Aexpand 属性设置为TRUE。但是,当窗口本身的宽度大于高度时,我想要一个小部件 B 来填充绘图区域未使用的剩余宽度。基本上,我想要这个:

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

但我得到了这个(如果 Bexpand 设置为 FALSE):

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

或者这个(如果 Bexpand 设置为 TRUE):

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

如何让 GTK 合作?

【问题讨论】:

  • 我不知道 GTK+ 3 或 GtkBuilder,但您可能应该朝gtk_widget_get_preferred_width_for_height() 的方向挖掘。不知道这是否可以通过 XML 实现,或者是否有更简单的方法。

标签: gtk gtk3


【解决方案1】:

我认为 A 应该是 expand=true,fill=true,B 应该是 expand=false 和 fill=true。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多