0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
1

GtkBuilder: Не может найти обработчик сигнала

03.12.2013, 16:26. Показов 1967. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот .ui-файл (делал в glade)
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkWindow" id="window_main">
    <property name="can_focus">False</property>
    <property name="border_width">10</property>
    <property name="window_position">center</property>
    <signal name="destroy" handler="window_main__destroy" swapped="no"/>
    <signal name="delete-event" handler="window_main__delete_event" swapped="no"/>
    <child>
      <object class="GtkBox" id="box_main">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <property name="spacing">10</property>
        <child>
          <object class="GtkLabel" id="label_test">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="label" translatable="yes">label</property>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="button_check">
            <property name="label" translatable="yes">button</property>
            <property name="use_action_appearance">False</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="use_action_appearance">False</property>
            <signal name="clicked" handler="button_check__press" object="label_test" swapped="no"/>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

Инициализация
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        void    Gui::init(int* _argc, char*** _argv) {
            gtk_init(_argc, _argv);
 
            /*
                GtkBuilder
                    builder
            */
            this->builder__ = gtk_builder_new();
 
                if(!gtk_builder_add_from_file(this->builder__, "assets/gui.ui", &this->error__)) {
                    g_critical("\n\tError per loading file: %s\n", this->error__->message);
                    g_error_free(this->error__);
                }
 
                gtk_builder_connect_signals(this->builder__, NULL);
 
 
 
            /*
                Window
                    main
            */
            this->window_main__ = GTK_WIDGET(gtk_builder_get_object(this->builder__, "window_main"));
                if(!this->window_main__) { g_critical ("\n\nError per getting widget for window_main\n"); }
                gtk_widget_show(this->window_main__);
 
 
 
            g_object_unref(this->builder__);
        }

Вот сами обработчики
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void    window_main__destroy(GtkWidget* _object, gpointer _data) {
    g_print("Quiting\n");
    gtk_main_quit();
}
gboolean    window_main__delete_event(GtkWidget* _widget, GdkEvent* _event, gpointer _data) {
    return FALSE;
}
 
 
 
void    button_check__press(GtkButton* _button, gpointer _label) {
    gtk_label_set_text(GTK_LABEL(_label), "hello!");
}

Вывод ошибки
Кликните здесь для просмотра всего текста
(dtx:6461): Gtk-WARNING **: Could not find signal handler 'window_main__destroy'

(dtx:6461): Gtk-WARNING **: Could not find signal handler 'window_main__delete_event'

(dtx:6461): Gtk-WARNING **: Could not find signal handler 'button_check__press'


Добавлено через 36 минут
И да, делал по этому уроку: http://habrahabr.ru/post/136922/
PS использую GTK+ 3.x
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2013, 16:26
Ответы с готовыми решениями:

Обработчик сигнала
У меня есть родительский процесс, он порождает дочерний. Затем, спустя какое-то время, (когда...

Обработчик сигнала из дочернего окна
Добрый день. только начинаю осваивать PyQt5. проблема в следующем. Есть два окна -form1 и form2....

Передача аргументов в обработчик сигнала
Добрый вечер. Подскажите возможно ли передать в обработчик сигнала дополнительные параметры? У меня...

Почему может не работать обработчик события?
Подскажите пожалуйста, почему в моем коде не срабатывает обработчик? LRESULT CALLBACK...

1
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
04.12.2013, 21:04  [ТС] 2
Решено:
При сборке нужно добавить -Wl,-export-dynamic, а объявление занести в:
C++
1
2
3
extern "C" {
    // Объявление
}
0
04.12.2013, 21:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2013, 21:04
Помогаю со студенческими работами здесь

Может ли один обработчик принимать несколько запросов одновременно?
Задача примерно такая: Есть сервер удаленный. На нем лежат php обработчики приложения. Есть...

Подскажите может ли влиять на качество сигнала поврежденый провод который идет от wi fi модуля на корпус экран
Подскажите может ли влиять на качество сигнала поврежденый провод который идет от wi fi модуля на...

При включении нет звукового сигнала BIOS, не включается монитор. В чём может быть причина?
Подскажите пожалуйста: включаю комп, нет звукового сигнала BIOS, не включается монитор. В чём может...

Отцепить обработчик, выполнить свой код, вернуть обработчик
Подскажите, возможно ли такое в JS? Практическая ситуация такая: хочу написать свой скрипт для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru