Note that with these calls, the last row and last column do not get any spacing.
4.5 Table Packing Example
Here we make a window with three buttons in a 2x2 table. The first two buttons will be placed in the upper row. A third, quit button, is placed in the lower row, spanning both columns. Which means it should look something like this:
Here's the source code:
|
5. Widget Overview
The general steps to creating a widget in GTK are:
gtk_*_new - one of various functions to create a new widget. These are all detailed in this section.
Connect all signals and events we wish to use to the appropriate handlers.
Set the attributes of the widget.
Pack the widget into a container using the appropriate call such as gtk_container_add() or gtk_box_pack_start().
gtk_widget_show() the widget.
gtk_widget_show() lets GTK know that we are done setting the attributes of the widget, and it is ready to be displayed. You may also use gtk_widget_hide to make it disappear again. The order in which you show the widgets is not important, but I suggest showing the window last so the whole window pops up at once rather than seeing the individual widgets come up on the screen as they're formed. The children of a widget (a window is a widget too) will not be displayed until the window itself is shown using the gtk_widget_show() function.
5.1 Casting
You'll notice as you go on that GTK uses a type casting system. This is always done using macros that both test the ability to cast the given item, and perform the cast. Some common ones you will see are:
|
These are all used to cast arguments in functions. You'll see them in the examples, and can usually tell when to use them simply by looking at the function's declaration.
As you can see below in the class hierarchy, all GtkWidgets are derived from the Object base class. This means you can use a widget in any place the function asks for an object - simply use the GTK_OBJECT() macro.