0

I am busy with a project on a raspberry pi, using g++ and GtkBuilder.

This is not my normal programming environment so I got stuck with a rather simple problem, to specify different sizes for two objects in a container. Say the first Button should be 10% of the Window height and the second button can be uspecified, that would default to 90% then.

I would like to create the widgets in a UI or XML file, therefor

gtk_widget_set_size_request(widget,width,height); 

is NOT the answer I am looking for. Below is my sample code,

<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>

I've tried:

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

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

I can't seem to find much information on the XML/UI side on the web.

2 Answers 2

2

You are using the wrong name for the property. In the documentation you can see that the property names are "width-request" and "height-request". This actually solved my problem, too.

Sign up to request clarification or add additional context in comments.

Comments

0

I found some info on my own question, GtkVbox and GtkHbox is apparently soon to be depricated, nevertheless,

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

on the larger button, in my case the bottom one, will request more space than the top button, therefor squeezing up the top button. Still not ideal since you have to know the screen size.

GtkGrid however works much better with packing as in my altered code below

<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>

I Hope it helps someone.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.