網上有很多關于pos機出現應用程序界面,用GTK+來創(chuàng)建一個帶界面的C語言程序7——菜單的創(chuàng)建的知識,也有很多人為大家解答關于pos機出現應用程序界面的問題,今天pos機之家(www.tjfsxbj.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機出現應用程序界面
完整的圖形界面應用程序應該包括主窗口、菜單條、工具條、狀態(tài)欄、窗口主題區(qū)域等元素。而菜單在圖形界面編程中經常會用到,稍微復雜的應用程序一般都會有多個菜單項來執(zhí)行各種不同的任務。菜單是由菜單條(GtkMenuBar)和從菜單條或其他菜單下拉的菜單(GtkMenu)組成。GTK+為我們提供了一套非常容易的設計菜單的方法,使用幾行代碼就可以為程序中添加多個菜單項。在這一節(jié)將介紹如何使用GTK+提供的方法來為窗口添加菜單條,并為菜單條添加多個菜單項,以及為菜單的項的信號添加回調函數。
在建立菜單條以前必須先建立應用程序的縱向組合框。在GTK+中向窗口中添加菜單的步驟一般是:
(1)創(chuàng)建菜單條(GtkMenuBar)
將菜單條加入到縱向的組合框中。使用函數gtk_menu_bar_new()建立GtkMenuBar構件。函數原型為:
GtkWidget * gtk_menu_bar_new(void);
//創(chuàng)建菜單條
menubar = gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE, FALSE, 0);
(2)創(chuàng)建菜單項。
當創(chuàng)建好菜單條后,此時的菜單條還是空的,還需要向菜單條中增加菜單項(GtkMenuItem)。使用gtk_menu_item_new_with_label建立一個帶有標號的菜單項。例如我們經常在帶有菜單條的程序中看到的“文件”菜單項,就可以使用下面這條語句來創(chuàng)建:
menuitem= gtk_menu_item_new_with_laibel(“文件”);
創(chuàng)建菜單項的函數原型為:
GtkWIdget * gtk_menu_item_new_with_label(const gchar*label);
label:菜單項的標號
(3)將菜單加入到菜單條中
在創(chuàng)建完菜單項后,這時就可以將它加入到前面建立的菜單條中了。使用gtk_menu_shell_append這個函數來將菜單項加入到菜單條中。
gtk_menu_bar_append(GTK_MENU_SHELL(menubar), menuitem);
其函數原型為:
void gtk_menu_shell_append(GtkMenuShell * menu, GtkWidget * child);
menu:菜單
child:菜單項
菜單創(chuàng)建
(4)創(chuàng)建菜單項,并加入到菜單中
一個簡單的菜單條已經創(chuàng)建好了,但是我們知道大多數菜單還包括一個子菜單,這個子菜單只有在下拉菜單的時候才能看到,例如當我們選擇“文件”菜單項時,會在下面出現一個子菜單。里面有新建、打開、保存等選項。如下圖:
程序中的下拉子菜單
在GTK+編程中子菜單的創(chuàng)建方法是先建立包含新建、打開、保存、退出等選項的新菜單,然后用gtk_menu_item_set_submenu函數將新菜單和“文件”菜單項聯系起來就可以了。
建立子菜單項和建立父菜單項的函數是一樣的,都是使用gtk_menu_item_new_with_label。創(chuàng)建菜單則使用gtk_menu_new函數來創(chuàng)建。
創(chuàng)建菜單:GtkWidget * gtk_menu_new(void);
建立子菜單和父菜單項的聯系:void gtk_menu_item_set_submenu(GtkMenuItem* menu_item, GtkWidget * submenu);
menu_item:父菜單項
submenu:子菜單
代碼如下:
/*菜單的創(chuàng)建和使用*/
#include <gtk/gtk.h>
GtkWidget * CreatMenuItem(GtkWidget * menuBar, char * menuitem);
GtkWidget * CreateMnun(GtkWidget * menuitem);
int main(int argc, char * argv[])
{
GtkWidget * window;
GtkWidget * box;
GtkWidget * menubar;
GtkWidget * menuitem;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "菜單條創(chuàng)建");
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_default_size(GTK_WINDOW(window), 500, 400);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
//創(chuàng)建一個縱向的盒子容器
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window), box);
menubar = gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, TRUE, 0);
menuitem = CreatMenuItem(menubar, "文件");
CreateMnun(menuitem);
CreatMenuItem(menubar, "編輯");
CreatMenuItem(menubar, "幫助");
gtk_widget_show_all(window);
gtk_main();
return FALSE;
}
GtkWidget * CreatMenuItem(GtkWidget * menuBar, char * item)
{
GtkWidget * menuitem;
menuitem = gtk_menu_item_new_with_label(item);
gtk_menu_shell_append(GTK_MENU_SHELL(menuBar), menuitem);
return menuitem;
}
GtkWidget * CreateMnun(GtkWidget * menuitem)
{
GtkWidget * menu; //定義子菜單
menu = gtk_menu_new(); //創(chuàng)建子菜單
CreatMenuItem(menu, "新建");
CreatMenuItem(menu, "打開");
CreatMenuItem(menu, "保存");
CreatMenuItem(menu, "退出");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);//將父菜單和子菜單聯系起來
}
運行結果:
菜單和子菜單建立
(5)菜單項的信號
到現在為止,我們的菜單已經建立起來了,當然還有一項工作沒有做,就是還沒有對菜單項的信號進行處理。菜單項的信號不多,最常用的是“activate”信號,表示菜單被激活(被單擊),也用g_signal_connect宏來連接,格式同按鈕的“clicked”信號相同。例如當用戶點擊退出時,程序退出。
子菜單信號處理
這一節(jié)中用到的函數:
創(chuàng)建菜單條:gtk_menu_bar_new();
創(chuàng)建菜單:gtk_menu_new();
創(chuàng)建帶有標號的菜單項:gtk_menu_item_new_with_label();
向菜單條加菜單:gtk_menu_shell_append();
設定菜單項的子菜單:gtk_menu_item_set_submenu();
創(chuàng)建菜單中的橫線:gtk_separator_menu_item_new();
創(chuàng)建菜單中的虛線:gtk_tearoff_menu_item_new();
后兩個函數在本例中沒有出現,讀者可以試著自己加進去。此外菜單項還有另外兩種形式,單選菜單和多選菜單項。有興趣的讀者可以試著自己做一下。
以上就是關于pos機出現應用程序界面,用GTK+來創(chuàng)建一個帶界面的C語言程序7——菜單的創(chuàng)建的知識,后面我們會繼續(xù)為大家整理關于pos機出現應用程序界面的知識,希望能夠幫助到大家!
