我是一个gtk初学者,有一些代码可以构造一个简单的简单菜单。
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *menubar;
GtkWidget *fileMenu;
GtkWidget *fileMi;
GtkWidget *quitMi;
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), 300, 200);
gtk_window_set_title(GTK_WINDOW(window), "Simple menu");
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
menubar = gtk_menu_bar_new();
fileMenu = gtk_menu_new();
fileMi = gtk_menu_item_new_with_label("File");
quitMi = gtk_menu_item_new_with_label("Quit");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu);
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quitMi);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi);
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(quitMi), "activate",
G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
"vbox = gtk_vbox_new(FALSE, 0); "是什么意思? 我在gtk Devhelp中查找gtk_vbox_new()函数,它告诉我这个函数返回一个GtkVBox--一个垂直容器盒,谁能告诉我这是什么?我对 "垂直容器盒 "毫无概念。
vbox = gtk_vbox_new(FALSE, 0); "是什么意思?
包装盒是一种看不见的小组件容器, 我们可以将小组件包装到其中, 有两种形式, 一种是水平盒, 一种是垂直盒. 当把widget打包到水平盒中时,根据使用的调用,对象会从左到右或从右到左水平插入。在垂直盒中,小组件是从上到下包装的,反之亦然。您可以在其他盒子内部或旁边使用任何盒子的组合来创建所需的效果。
hbox:
+---+---+---+---+---+
| 1 | 2 | 3 | 4 | 5 |
+---+---+---+---+---+
vbox:
+---+
| 1 |
+---+
| 2 |
+---+
| 3 |
+---+
| 4 |
+---+
| 5 |
+---+
gtk_vbox_new
在当前版本(GTK3)中已被废弃, 现在我们应该使用:
gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); /* where 10 is an arbitrary padding */
或
gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);