The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (GUI, XWindow, Qt, GTK)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

новичек в Gtk+, Rtl (?), 10-Май-08, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


2. "новичек в Gtk+"  +/
Сообщение от E.L.K.email (?), 11-Май-08, 03:23 
>1) Подключаю функцыю к 9 кнопкам, где в качестве данных передаю адрес gint переменной, при >каждом вызове функции значение n увеличивается от 0 до 8
>for(i=0;i<9;i++){
>  button = gtk_button_new ();
>  g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (click),&n);
>  gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);
>}

Я так понимаю, перебор идет не по i, а по n?
Иначе я просто затрудняюсь увидеть тут увеличение n. (:
Видимо, вся проблема в том, что передавая &n, то есть _адрес_ переменной n, ты получаешь в рез-те то, что выводимое тобой *(gint*)data является тем же самым n. Вернее значением, взятым по адресу, где хранится n. Фактически, если ты остановишь цикл на 4х итерациях вместо 8ми, то получишь

data: 4
data: 4
data: 4

Если посмотришь в отладчике в нутри callback'а, то ты увидишь, что они все получают одинаковый параметр - адрес переменной n. Что ты, собственно, туда и передал. (:

Передавай значение.

Ответить | Правка | Наверх | Cообщить модератору

3. "новичек в Gtk+"  +/
Сообщение от NuINu (??), 11-Май-08, 21:37 
Ну почему же никто не программирует? программируют, достаточно взглянуть на убунту.
Другое дело в россии это делают так, ни шатко не валко. :-)
Если хотите освоить ГТК приобретите пару книг:
Андрей Костельцов GTK+ Разработка переносимых интерфесов
Артур Гриффитс Программирование GNOME/GTK+

Ага на первый ответили, ну повторюсь.
1)g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (click),&n);
ну когда в цикле делаешь коннект со ссылкой на одну и туже переменную вряд ли стоит ожидать что поведение функций будет различным попробуй так:
g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (click),i);

2)можно конечно и так как ты написал. но можно и так:
   gtk_button_set_image(GTK_BUTTON(widget), image_2);
тут есть одна тонкость если захочешь использовать image_1, то он окажеться уже удаленным :)
что бы этого не произошло сделай предварительно:
gtk_widget_ref(image_1);


3) что бы окно не меняло размер надо вызвать функцию ....
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
правильно :)

а вот чтобы оно не уменьшалось надо задать необходимый размер ВЛОЖЕННОГО в окно
виджета:
gtk_widget_set_size_request(widget_in_window, 360, 360);
ну а за ним и gtk_window_set_resizable вызвать.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру