Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2013, 21:29   #1
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию Где ошибка? glade, gtk, си

Хочу побаловаться глейдом, но не получается.
Код:
//gcc -Wall "%f" -o "%e"  -export-dynamic `pkg-config --cflags gtk+-3.0` `pkg-config --libs gtk+-3.0`

/*
(test:28689): Gtk-WARNING **: Could not find signal handler 'handler'

** (test:28689): CRITICAL **: Ошибка при получении виджета окна


(test:28689): Gtk-CRITICAL **: gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed



 
 <?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <property name="margin_left">1</property>
    <property name="title" translatable="yes">HabraUI!</property>
    <property name="resizable">False</property>
    <property name="window_position">center</property>
    <property name="default_width">440</property>
    <property name="default_height">250</property>
    <property name="type_hint">menu</property>
    <property name="has_resize_grip">False</property>
    <child>
      <object class="GtkBox" id="box1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkLabel" id="label1">
            <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="button1">
            <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="handler" object="label1" 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> 
 */
#include <gtk/gtk.h>

static GtkWidget* create_window(void)
{
	GtkWidget *window;
	GtkBuilder *builder;
	GError* error = NULL;
	
	builder = gtk_builder_new();
	if(!gtk_builder_add_from_file(builder, "asd.glade", &error)){
		g_critical("Не могу загрузить файл: %s", error->message);
		g_error_free(error);
	}
	
	gtk_builder_connect_signals(builder, NULL);	
	
	if(!(window = GTK_WIDGET(gtk_builder_get_object(builder, "window"))))
		g_critical("Ошибка при получении виджета окна\n");
	
	g_object_unref(builder);

	return window;
}

int main(int argc, char *argv[]){
	GtkWidget *window;
	
	gtk_init(&argc, &argv);
	window = create_window();
	gtk_widget_show(window);
	gtk_main();

	return 0;
}

static void handler(GtkButton *button, gpointer label){
	gtk_label_set_text(label, "пирвет нащаааникама");
}
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 19.07.2013, 21:43   #2
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Почитал туториал на их сайте, ошибка поиска обработчика исчезла после модификации его из static void в G_MODULE_EXPORT void.
do not use your brain

Последний раз редактировалось Кащей; 19.07.2013 в 22:20.
Кащей вне форума Ответить с цитированием
Старый 19.07.2013, 21:46   #3
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Остальные ошибки ушли после смены названия окна в glade из window1 в window.
Абажаю форумы, тока напишеш, как тутже сам решиш проблему. (:
Тема закрыта.
do not use your brain

Последний раз редактировалось Кащей; 19.07.2013 в 22:20.
Кащей вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cairo + GTK-3. В чём ошибка? Кащей Общие вопросы C/C++ 6 10.07.2013 01:37
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
написал программу, где то ошибка, не пойму где... Kelevra91 Общие вопросы C/C++ 5 17.01.2011 16:38
gtk+glade+c heart C++ Builder 16 13.12.2009 17:08
где ошибка? О.о ConChita Общие вопросы C/C++ 2 23.11.2009 10:45