...Вот вырожденный код.
Код: Выделить всё
#include <gtk/gtk.h>
int main ()
{
GtkBuilder *builder = gtk_builder_new_from_file ("builder.ui");
return 0;
}
Ну то есть строим какой-то там объект, а данные берём из файла builder.ui. Вот он:
Shell
$ cat builder.ui
<interface>
<object class="GtkDialog" id="dialog1">
<child internal-child="content_area">
<object class="GtkBox">
<child internal-child="action_area">
<object class="GtkBox">
<child>
<object class="GtkButton" id="ok_button">
<property name="label" translatable="yes">_Ok</property>
<property name="use-underline">True</property>
<signal name="clicked" handler="ok_button_clicked"/>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
$
Компилю, запускаю.:
Shell
$ gcc $( pkg-config --cflags gtk4 ) -o example-4 example-4.c $( pkg-config --libs gtk4 )
$ ./example-4
(process:64884): Gtk-ERROR **: 15:28:06.842: failed to add UI from file builder.ui: Error on line 1 char 1: Document must begin with an element (e.g. <book>)
Ловушка трассировки/останова
$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Там где-то авторы намекнули, что можно чуть-чуть изменять (а можно и не изменять) файл *.ui:
Shell
Пытаюсь:
$ cat builder.ui
<?xml version="1.0" encoding="UTF-8">
<interface domain="your-app">
<requires lib="gtk" version="4.0" />
</interface>
$ gcc $( pkg-config --cflags gtk4 ) -o example-4 example-4.c $( pkg-config --libs gtk4 )
$ ./example-4
(process:65153): Gtk-ERROR **: 15:31:07.872: failed to add UI from file builder.ui: Error on line 1 char 1: Document must begin with an element (e.g. <book>)
Ловушка трассировки/останова
$