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

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

網(wǎng)上有很多關(guān)于pos機出現(xiàn)應(yīng)用程序界面,用GTK+來創(chuàng)建一個帶界面的C語言程序7——菜單的創(chuàng)建的知識,也有很多人為大家解答關(guān)于pos機出現(xiàn)應(yīng)用程序界面的問題,今天pos機之家(www.dsth100338.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機出現(xiàn)應(yīng)用程序界面

pos機出現(xiàn)應(yīng)用程序界面

完整的圖形界面應(yīng)用程序應(yīng)該包括主窗口、菜單條、工具條、狀態(tài)欄、窗口主題區(qū)域等元素。而菜單在圖形界面編程中經(jīng)常會用到,稍微復(fù)雜的應(yīng)用程序一般都會有多個菜單項來執(zhí)行各種不同的任務(wù)。菜單是由菜單條(GtkMenuBar)和從菜單條或其他菜單下拉的菜單(GtkMenu)組成。GTK+為我們提供了一套非常容易的設(shè)計菜單的方法,使用幾行代碼就可以為程序中添加多個菜單項。在這一節(jié)將介紹如何使用GTK+提供的方法來為窗口添加菜單條,并為菜單條添加多個菜單項,以及為菜單的項的信號添加回調(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)建菜單項。

當(dāng)創(chuàng)建好菜單條后,此時的菜單條還是空的,還需要向菜單條中增加菜單項(GtkMenuItem)。使用gtk_menu_item_new_with_label建立一個帶有標(biāo)號的菜單項。例如我們經(jīng)常在帶有菜單條的程序中看到的“文件”菜單項,就可以使用下面這條語句來創(chuàng)建:

menuitem= gtk_menu_item_new_with_laibel(“文件”);

創(chuàng)建菜單項的函數(shù)原型為:

GtkWIdget * gtk_menu_item_new_with_label(const gchar*label);

label:菜單項的標(biāo)號

(3)將菜單加入到菜單條中

在創(chuàng)建完菜單項后,這時就可以將它加入到前面建立的菜單條中了。使用gtk_menu_shell_append這個函數(shù)來將菜單項加入到菜單條中。

gtk_menu_bar_append(GTK_MENU_SHELL(menubar), menuitem);

其函數(shù)原型為:

void gtk_menu_shell_append(GtkMenuShell * menu, GtkWidget * child);

menu:菜單

child:菜單項

菜單創(chuàng)建

(4)創(chuàng)建菜單項,并加入到菜單中

一個簡單的菜單條已經(jīng)創(chuàng)建好了,但是我們知道大多數(shù)菜單還包括一個子菜單,這個子菜單只有在下拉菜單的時候才能看到,例如當(dāng)我們選擇“文件”菜單項時,會在下面出現(xiàn)一個子菜單。里面有新建、打開、保存等選項。如下圖:

程序中的下拉子菜單

在GTK+編程中子菜單的創(chuàng)建方法是先建立包含新建、打開、保存、退出等選項的新菜單,然后用gtk_menu_item_set_submenu函數(shù)將新菜單和“文件”菜單項聯(lián)系起來就可以了。

建立子菜單項和建立父菜單項的函數(shù)是一樣的,都是使用gtk_menu_item_new_with_label。創(chuàng)建菜單則使用gtk_menu_new函數(shù)來創(chuàng)建。

創(chuàng)建菜單:GtkWidget * gtk_menu_new(void);

建立子菜單和父菜單項的聯(lián)系: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);//將父菜單和子菜單聯(lián)系起來

}

運行結(jié)果:

菜單和子菜單建立

(5)菜單項的信號

到現(xiàn)在為止,我們的菜單已經(jīng)建立起來了,當(dāng)然還有一項工作沒有做,就是還沒有對菜單項的信號進行處理。菜單項的信號不多,最常用的是“activate”信號,表示菜單被激活(被單擊),也用g_signal_connect宏來連接,格式同按鈕的“clicked”信號相同。例如當(dāng)用戶點擊退出時,程序退出。

子菜單信號處理

這一節(jié)中用到的函數(shù):

創(chuàng)建菜單條:gtk_menu_bar_new();

創(chuàng)建菜單:gtk_menu_new();

創(chuàng)建帶有標(biāo)號的菜單項:gtk_menu_item_new_with_label();

向菜單條加菜單:gtk_menu_shell_append();

設(shè)定菜單項的子菜單:gtk_menu_item_set_submenu();

創(chuàng)建菜單中的橫線:gtk_separator_menu_item_new();

創(chuàng)建菜單中的虛線:gtk_tearoff_menu_item_new();

后兩個函數(shù)在本例中沒有出現(xiàn),讀者可以試著自己加進去。此外菜單項還有另外兩種形式,單選菜單和多選菜單項。有興趣的讀者可以試著自己做一下。

以上就是關(guān)于pos機出現(xiàn)應(yīng)用程序界面,用GTK+來創(chuàng)建一個帶界面的C語言程序7——菜單的創(chuàng)建的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機出現(xiàn)應(yīng)用程序界面的知識,希望能夠幫助到大家!

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

你可能會喜歡:

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