IPB

Здравствуйте, гость ( Вход | Регистрация )

> GTK+ Си
Поделиться
kostyalamer
сообщение 30.8.2014, 16:54
Сообщение #1


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Предлагаю, выкладывать в этой теме примеры простейших программ и разную полезную информацию по GTK+.
Правда только если это будет кому-либо интересно на нашем форуме, например тема с Arduino у нас здесь заглохла .
Поскольку плодить мертвые темы глупо, пишите если есть интерес, если интереса ни у кого не будет , тему просто удалим.
PS А вообще у нас как-то тихо, что на Линуксе для всех , что здесь wink.gif

Сообщение отредактировал kostyalamer - 30.8.2014, 17:03
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
kostyalamer
сообщение 7.9.2014, 21:07
Сообщение #2


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Шаблон для программ с менюшками , по мотивам : http://welinux.ru/post/1754/
Код
#include <gtk/gtk.h>

int main( int argc, char *argv[])
{

  GtkWidget *window;
  GtkWidget *vbox;
  GtkWidget *menubar;
  GtkWidget *menu1;
  GtkWidget *m1;
  GtkWidget *menu2;
  GtkWidget *m2;
  GtkWidget *menu3;
  GtkWidget *m3;
  GtkWidget *quit;
  GtkWidget *m11,*m21, *m31, *m12,*m22,*m32;
  
  void menu_clicked(GtkWidget *m11, gpointer data) // Обработчик выбора пунктов меню
{
    printf("Выбран пункт %s  \n", (char *) data);

}

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 250, 200);
  gtk_window_set_title(GTK_WINDOW(window), "menu");

  vbox = gtk_vbox_new(FALSE, 0);
  gtk_container_add(GTK_CONTAINER(window), vbox);

  menubar = gtk_menu_bar_new();
  menu1= gtk_menu_new();

  m1= gtk_menu_item_new_with_label("Меню_1");
  m11 = gtk_menu_item_new_with_label("Меню1.1");
  m12 = gtk_menu_item_new_with_label("Меню1.2");
  quit = gtk_menu_item_new_with_label("Выход");
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(m1), menu1);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu1), m11);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu1), m12);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu1), quit);
  gtk_menu_shell_append(GTK_MENU_SHELL(menubar), m1);
  gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);
  
  menu2 = gtk_menu_new();

  m2 = gtk_menu_item_new_with_label("Меню_2");
  m21 = gtk_menu_item_new_with_label("Меню_2.1");
  m22 = gtk_menu_item_new_with_label("Меню_2.2");
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(m2), menu2);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu2), m21);
   gtk_menu_shell_append(GTK_MENU_SHELL(menu2), m22);
  gtk_menu_shell_append(GTK_MENU_SHELL(menubar), m2);
  gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);  
  
   menu3 = gtk_menu_new();

  m3 = gtk_menu_item_new_with_label("Меню_3");
  m31 = gtk_menu_item_new_with_label("Меню_3.1");
  m32 = gtk_menu_item_new_with_label("Меню_3.2");

  gtk_menu_item_set_submenu(GTK_MENU_ITEM(m3), menu3);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu3), m31);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu3), m32);
  gtk_menu_shell_append(GTK_MENU_SHELL(menubar), m3);
  
  gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);  

  g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);


  g_signal_connect( G_OBJECT( m11 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню1.1");
  g_signal_connect( G_OBJECT( m12 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню1.2");
  g_signal_connect( G_OBJECT( m21 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню2.1");
  g_signal_connect( G_OBJECT( m22 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню2.2");
  g_signal_connect( G_OBJECT( m31 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню3.1");
  g_signal_connect( G_OBJECT( m32 ), "activate",GTK_SIGNAL_FUNC(menu_clicked), "Меню3.2");
  g_signal_connect(G_OBJECT(quit), "activate",G_CALLBACK(gtk_main_quit), NULL);
  
  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}


Выглядит вот так:
Прикрепленный файл  shablon03.png ( 12.27 килобайт ) Кол-во скачиваний: 3


PS на этом шаблоне я и закончу, все что нужно для написания простейших приложений на си и gtk здесь есть, а писать в пустоту не интересно wink.gif Будут вопросы, отвечу в теме.
PPS Клубу явно не хватает кодеров
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 5.7.2025, 9:13