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

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

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

本文目錄一覽:

1、pos機出現應用程序界面

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機出現應用程序界面的知識,希望能夠幫助到大家!

轉發(fā)請帶上網址:http://www.tjfsxbj.com/news/34733.html

你可能會喜歡:

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