2015-01-14 10 views
0

g ++ 및 GtkBuilder를 사용하여 라스베리 파이 프로젝트를 진행하고 있습니다.Gtk + 3 GtkBuilder UI/XML 제한 위젯 크기

이것은 내 일반적인 프로그래밍 환경이 아니기 때문에 컨테이너의 두 객체에 대해 서로 다른 크기를 지정하기 위해 다소 간단한 문제가 있습니다. 첫 번째 버튼이 윈도우 높이의 10 %이어야하고 두 번째 버튼이 지정 될 수 있다고 가정 해 봅시다. 기본값은 90 %입니다.

나는 UI 또는 XML 파일에서 위젯을 만들고 싶습니다

, 이에 대한

gtk_widget_set_size_request(widget,width,height); 

내가 찾던 해답이 아니다. 내가 웹에서 XML/UI 측면에서 많은 정보를 찾을 수 없습니다

<property name="default_height">100</property> 

<property name="request_height">100</property> 

: 다음은 내 샘플 코드, 내가 노력했습니다

<interface> 
    <object id="window" class="GtkWindow"> 
    <property name="title">Window</property> 
    <property name="border-width">10</property> 
    <child> 
     <object id="mainbox" class="GtkVBox"> 
     <property name="visible">True</property> 
     <property name="homogeneous">False</property> 
     <child> 
      <object id="button1" class="GtkButton"> 
      <property name="label">Button1</property> 
      </object> 
     </child> 
     <child> 
      <object id="button2" class="GtkButton"> 
      <property name="label">Button2</property> 
      </object> 
     </child>  
     </object>   
    </child> 
    </object> 
</interface> 

이다.

답변

0

나는 내 자신의 질문에 대한 몇 가지 정보를 발견는 GtkVBox 및 GtkHbox는 것보다 더 많은 공간을 요청합니다, 내 경우 아래 하나, 큰 버튼

<property name="request-height">500</property> 

, 그럼에도 불구하고, 분명히 곧 depricated 될 것이다 상단 버튼, 그 때문에 위쪽 버튼을 누르십시오. 아직도 화면 크기를 알아야하기 때문에 이상적이지 않습니다.

GtkGrid 그러나 나는 그것이 사람을 도움이되기를 바랍니다

<interface> 
    <object id="window" class="GtkWindow"> 
    <property name="title">Window</property> 
    <property name="border-width">10</property> 
    <child> 
     <object id="mainbox" class="GtkGrid"> 
     <property name="visible">True</property> 
     <property name="row-homogeneous">True</property> 
     <child> 
      <object id="button1" class="GtkButton"> 
      <property name="label">Button1</property> 
      </object> 
      <packing> 
      <property name="top-attach">0</property> 
      <property name="height">1</property> 
      </packing> 
     </child> 
     <child> 
      <object id="button2" class="GtkButton"> 
      <property name="label">Button2</property> 
      </object> 
      <packing> 
      <property name="top-attach">1</property> 
      <property name="height">9</property> 
      </packing> 
     </child>  
     </object>   
    </child> 
    </object> 
</interface> 

아래에있는 내 변경된 코드로 포장 매우 잘 작동합니다.

1

속성에 잘못된 이름을 사용하고 있습니다. In the documentation 당신은 속성 이름이 "width-request"와 "height-request"임을 알 수 있습니다. 이것은 실제로 내 문제를 해결했습니다.