GtkBuilder

Модератор: Модераторы разделов

BratSinot
Сообщения: 812
ОС: Slackware64

GtkBuilder

Сообщение BratSinot »

Доброго времени суток!

Как через GtkBuilder связать сигнал кнопки с моим проектом?
Имеем test.xml:

Код:

<?xml version="1.0"?> <interface> <requires lib="gtk+" version="2.16"/> <!-- interface-naming-policy project-wide --> <object class="GtkWindow" id="window1"> <signal name="destroy" handler="gtk_main_quit"/> <child> <object class="GtkFixed" id="fixed1"> <property name="visible">True</property> <child> <object class="GtkButton" id="plus"> <property name="label" translatable="yes">+</property> <property name="width_request">100</property> <property name="height_request">80</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <signal name="clicked" handler="on_plus_clicked"/> </object> <packing> <property name="y">342</property> </packing> </child> <child> <object class="GtkButton" id="-"> <property name="label" translatable="yes">-</property> <property name="width_request">100</property> <property name="height_request">80</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> </object> <packing> <property name="x">363</property> <property name="y">342</property> </packing> </child> <child> <object class="GtkLabel" id="label1"> <property name="width_request">462</property> <property name="height_request">139</property> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> <property name="label" translatable="yes">0</property> </object> </child> </object> </child> </object> </interface>

И сам проект:

Код:

#include <gtk/gtk.h> GtkBuilder *builder; void on_plus_clicked(GtkButton *button, gpointer user_data) { gtk_label_set_text(gtk_builder_get_object(builder, "label1"), "qwe"); } int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); builder = gtk_builder_new (); gtk_builder_add_from_file (builder, "test.xml", NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window1")); gtk_builder_connect_signals(builder, NULL); g_object_unref (G_OBJECT (builder)); gtk_widget_show (window); gtk_main (); return 0; }

Собираю, а он мне в консоли пишет что : "Could not find signal handler 'on_plus_clicked'".
В интернете натыкался только на те примеры, где libglade используется.

Все, решил. Надо при компиляции указать флаг -export-dynamic.
Спасибо сказали: