pos機(jī)出現(xiàn)應(yīng)用程序界面,用GTK+來(lái)創(chuàng)建一個(gè)帶界面的C語(yǔ)言程序7——菜單的創(chuàng)建

 新聞資訊  |   2023-04-28 09:32  |  投稿人:pos機(jī)之家

網(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í),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.afbey.com/news/34733.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。