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

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

Вернуться   Форум программистов > Операционные системы > Linux (Ubuntu, Debian, Red Hat, CentOS, Mint)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2014, 22:53   #1
Rom@rio
Новичок
Джуниор
 
Регистрация: 26.10.2014
Сообщений: 1
По умолчанию Как сделать меню 3-его уровня используя библиотеку Gtk+

Очень интересуюсь тем, как сделать меню 3-его уровня. Ниже приведу листинг, с помощью которого получилось сделать строку меню с пунктом меню, по нажатию которого появляется меню. И для этого меню, свои пункты меню.
Код:
#include <gtk/gtk.h>
 
gint32 delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
    gtk_main_quit();
    return FALSE;
}
 
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *menu_bar;
    GtkWidget *menu;
    GtkWidget *box;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "menu");
    gtk_container_set_border_width(GTK_CONTAINER(window), 10);
    g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), "NULL");
 
    box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
    gtk_container_add(GTK_CONTAINER(window), box);
 
    menu = gtk_menu_new(); // меню
    menu_bar = gtk_menu_bar_new(); // строка меню
    // создаем новые пункты меню
    GtkWidget *file_item = gtk_menu_item_new_with_label("file");
    GtkWidget *open_item = gtk_menu_item_new_with_label("open");
    GtkWidget *save_item = gtk_menu_item_new_with_label("save");
    GtkWidget *quit_item = gtk_menu_item_new_with_label("quit");
    // привязываем пункты меню к меню
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), open_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), save_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), quit_item);
    // обработчики сигналов для пунктов меню
    g_signal_connect_swapped(G_OBJECT(open_item), "activate", G_CALLBACK(delete_event), "NULL");
    g_signal_connect_swapped(G_OBJECT(save_item), "activate", G_CALLBACK(delete_event), "NULL");
    g_signal_connect_swapped(G_OBJECT(quit_item), "activate", G_CALLBACK(delete_event), "NULL");
 
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item), menu);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file_item);
 
    gtk_box_pack_start(GTK_BOX(box), menu_bar, FALSE, FALSE, 3);
 
    gtk_widget_show_all(window);
 
    gtk_main();
 
    return 0;
}
Помогите направить меня в правильную сторону. Если не кодом, то идеей..
Rom@rio вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню второго уровня. artur7373888 HTML и CSS 0 05.02.2013 22:45
1C-Bitrix. Не выпадает меню второго уровня. dlregistration WordPress и другие CMS 1 15.01.2013 09:26
Меню codrops (стильное меню), Как сделать чтобы текст не смещался в блоке? AlienNation HTML и CSS 2 28.09.2011 13:17
как сделать запрос sql используя данные из массива xxxsas SQL, базы данных 1 19.06.2011 22:54
Как сделать одну динамическую библиотеку из нескольких статических? VIIIP Общие вопросы C/C++ 0 20.10.2010 17:25