網(wǎng)上有很多關(guān)于pos機(jī)出現(xiàn)應(yīng)用程序界面,用GTK+來(lái)創(chuàng)建一個(gè)帶界面的C語(yǔ)言程序7——菜單的創(chuàng)建的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)出現(xiàn)應(yīng)用程序界面的問(wèn)題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
1、pos機(jī)出現(xiàn)應(yīng)用程序界面
pos機(jī)出現(xiàn)應(yīng)用程序界面
完整的圖形界面應(yīng)用程序應(yīng)該包括主窗口、菜單條、工具條、狀態(tài)欄、窗口主題區(qū)域等元素。而菜單在圖形界面編程中經(jīng)常會(huì)用到,稍微復(fù)雜的應(yīng)用程序一般都會(huì)有多個(gè)菜單項(xiàng)來(lái)執(zhí)行各種不同的任務(wù)。菜單是由菜單條(GtkMenuBar)和從菜單條或其他菜單下拉的菜單(GtkMenu)組成。GTK+為我們提供了一套非常容易的設(shè)計(jì)菜單的方法,使用幾行代碼就可以為程序中添加多個(gè)菜單項(xiàng)。在這一節(jié)將介紹如何使用GTK+提供的方法來(lái)為窗口添加菜單條,并為菜單條添加多個(gè)菜單項(xiàng),以及為菜單的項(xiàng)的信號(hào)添加回調(diào)函數(shù)。
在建立菜單條以前必須先建立應(yīng)用程序的縱向組合框。在GTK+中向窗口中添加菜單的步驟一般是:
(1)創(chuàng)建菜單條(GtkMenuBar)
將菜單條加入到縱向的組合框中。使用函數(shù)gtk_menu_bar_new()建立GtkMenuBar構(gòu)件。函數(shù)原型為:
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)建菜單項(xiàng)。
當(dāng)創(chuàng)建好菜單條后,此時(shí)的菜單條還是空的,還需要向菜單條中增加菜單項(xiàng)(GtkMenuItem)。使用gtk_menu_item_new_with_label建立一個(gè)帶有標(biāo)號(hào)的菜單項(xiàng)。例如我們經(jīng)常在帶有菜單條的程序中看到的“文件”菜單項(xiàng),就可以使用下面這條語(yǔ)句來(lái)創(chuàng)建:
menuitem= gtk_menu_item_new_with_laibel(“文件”);
創(chuàng)建菜單項(xiàng)的函數(shù)原型為:
GtkWIdget * gtk_menu_item_new_with_label(const gchar*label);
label:菜單項(xiàng)的標(biāo)號(hào)
(3)將菜單加入到菜單條中
在創(chuàng)建完菜單項(xiàng)后,這時(shí)就可以將它加入到前面建立的菜單條中了。使用gtk_menu_shell_append這個(gè)函數(shù)來(lái)將菜單項(xiàng)加入到菜單條中。
gtk_menu_bar_append(GTK_MENU_SHELL(menubar), menuitem);
其函數(shù)原型為:
void gtk_menu_shell_append(GtkMenuShell * menu, GtkWidget * child);
menu:菜單
child:菜單項(xiàng)
菜單創(chuàng)建
(4)創(chuàng)建菜單項(xiàng),并加入到菜單中
一個(gè)簡(jiǎn)單的菜單條已經(jīng)創(chuàng)建好了,但是我們知道大多數(shù)菜單還包括一個(gè)子菜單,這個(gè)子菜單只有在下拉菜單的時(shí)候才能看到,例如當(dāng)我們選擇“文件”菜單項(xiàng)時(shí),會(huì)在下面出現(xiàn)一個(gè)子菜單。里面有新建、打開(kāi)、保存等選項(xiàng)。如下圖:
程序中的下拉子菜單
在GTK+編程中子菜單的創(chuàng)建方法是先建立包含新建、打開(kāi)、保存、退出等選項(xiàng)的新菜單,然后用gtk_menu_item_set_submenu函數(shù)將新菜單和“文件”菜單項(xiàng)聯(lián)系起來(lái)就可以了。
建立子菜單項(xiàng)和建立父菜單項(xiàng)的函數(shù)是一樣的,都是使用gtk_menu_item_new_with_label。創(chuàng)建菜單則使用gtk_menu_new函數(shù)來(lái)創(chuàng)建。
創(chuàng)建菜單:GtkWidget * gtk_menu_new(void);
建立子菜單和父菜單項(xiàng)的聯(lián)系:void gtk_menu_item_set_submenu(GtkMenuItem* menu_item, GtkWidget * submenu);
menu_item:父菜單項(xiàng)
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)建一個(gè)縱向的盒子容器
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, "打開(kāi)");
CreatMenuItem(menu, "保存");
CreatMenuItem(menu, "退出");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);//將父菜單和子菜單聯(lián)系起來(lái)
}
運(yùn)行結(jié)果:
菜單和子菜單建立
(5)菜單項(xiàng)的信號(hào)
到現(xiàn)在為止,我們的菜單已經(jīng)建立起來(lái)了,當(dāng)然還有一項(xiàng)工作沒(méi)有做,就是還沒(méi)有對(duì)菜單項(xiàng)的信號(hào)進(jìn)行處理。菜單項(xiàng)的信號(hào)不多,最常用的是“activate”信號(hào),表示菜單被激活(被單擊),也用g_signal_connect宏來(lái)連接,格式同按鈕的“clicked”信號(hào)相同。例如當(dāng)用戶點(diǎn)擊退出時(shí),程序退出。
子菜單信號(hào)處理
這一節(jié)中用到的函數(shù):
創(chuàng)建菜單條:gtk_menu_bar_new();
創(chuàng)建菜單:gtk_menu_new();
創(chuàng)建帶有標(biāo)號(hào)的菜單項(xiàng):gtk_menu_item_new_with_label();
向菜單條加菜單:gtk_menu_shell_append();
設(shè)定菜單項(xiàng)的子菜單:gtk_menu_item_set_submenu();
創(chuàng)建菜單中的橫線:gtk_separator_menu_item_new();
創(chuàng)建菜單中的虛線:gtk_tearoff_menu_item_new();
后兩個(gè)函數(shù)在本例中沒(méi)有出現(xiàn),讀者可以試著自己加進(jìn)去。此外菜單項(xiàng)還有另外兩種形式,單選菜單和多選菜單項(xiàng)。有興趣的讀者可以試著自己做一下。
以上就是關(guān)于pos機(jī)出現(xiàn)應(yīng)用程序界面,用GTK+來(lái)創(chuàng)建一個(gè)帶界面的C語(yǔ)言程序7——菜單的創(chuàng)建的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)出現(xiàn)應(yīng)用程序界面的知識(shí),希望能夠幫助到大家!
