如何使用gtk_popover_menu_new(),使用简单的gtk_menu_button_new()?
当我尝试使用Glade时,它工作得很完美,但是,我需要.c代码,而不是.ui代码。
我在internet上找不到只使用.c作为弹出菜单的示例代码
有人能提供一个非常简单的例子代码在弹出菜单包含几个按钮吗最好是用int main编写窗口设计代码,而不是静态void activate。
There will be .gif that will show what I want to make
另外,我知道,为了在里面安装多个按钮,我需要使用GTK U盒。
编辑:我添加了示例代码,其中包含菜单按钮,但它不起作用请完成此代码,使其像在.gif中一样工作。
编译:gccpkg-config --cflags gtk+-3.0
-o'./testprogram.run'./testprogramcode.c'pkg-config --libs gtk+-3.0
编辑2:我在测试框中添加了一个按钮
代码:
#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;
}
最佳答案
您可以尝试以下代码片段:
GtkWidget *mb = gtk_menu_button_new ();
GtkWidget *po = gtk_popover_new (mb);
GtkWidget *lb = gtk_label_new ("hello");
gtk_container_add (po, lb);
g_object_set (mb, "margin", 150, NULL);
gtk_menu_button_set_popover (mb, po);
不过,避免使用.ui是一种省钱的做法你最好避免过早乐观。