Rom@rio 0 Posted October 26, 2014 Report Share Posted October 26, 2014 Очень интересуюсь тем, как сделать меню 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; } Помогите направить меня в правильную сторону. Если не кодом, то идеей.. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.