Как мне работать с простым gtk_menu_button_new () с помощью gtk_popover_menu_new ()?
Когда я попробовал это с помощью Glade, он работал безупречно, однако мне нужен код .c, а не .ui.
Я не могу найти один пример кода в Интернете, который использует только .c для Popovermenu
Может ли кто-нибудь предоставить очень простой пример кода, где всплывающее меню содержит несколько кнопок? Предпочтительно, когда код дизайна окна написан в int main, а не static void Activate.
Там будет .gif, который покажет, что я хочу сделать
P.S. Я осознаю, что для размещения нескольких кнопок внутри мне нужно использовать GTK_BOX.
РЕДАКТИРОВАТЬ: я добавил пример кода, который содержит кнопку меню, но он не работает. Пожалуйста, закончите этот код, чтобы работать как в .gif.
Компиляция: gcc pkg-config --cflags gtk+-3.0
-o './testprogram.run' './testprogramcode.c' pkg-config --libs gtk+-3.0
Редактировать 2: я добавил одну кнопку в testBox
Код:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
//Create window
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), 300, 200);
gtk_window_set_title(GTK_WINDOW(window), "Simple menu");
//Creating fixed container
GtkWidget *fixedContainer = gtk_fixed_new ();
gtk_container_add(GTK_CONTAINER(window), fixedContainer);
//Creating and adding new menu button in fixed container
GtkWidget *testMenuButton = gtk_menu_button_new ();
gtk_fixed_put (GTK_FIXED(fixedContainer), testMenuButton, 50, 50);
//Adding popover to menu button
GtkWidget *testPopOver = gtk_popover_new (testMenuButton);
//Creating GTK_BOX to hold popover box contents
GtkWidget *testBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
//Creating and adding new button in testBox
GtkWidget *testButton = gtk_button_new ();
gtk_box_pack_start(GTK_BOX(testBox), testButton, TRUE, TRUE, 5);
//How to add testBox to testPopOver?
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}