pos机出现应用程序界面,用GTK+来创建一个带界面的C语言程序7——菜单的创建_深圳POS机领取中心
央行授权,银联认证,正规乐刷pos机 免费申请POS机,费率低至0.38%秒到账 服务热线:15727761212,微信客服:15727761212
【金手指POS机办理服务中心】pos机出现应用程序界面,用GTK+来创建一个带界面的C语言程序7——菜单的创建_深圳POS机领取中心
网上有很多关于pos机出现应用程序界面,用GTK+来创建一个带界面的C语言程序7——菜单的创建的知识,也有很多人为大家解答关于pos机出现应用程序界面的问题,今天POS机领取中心(【金手指POS机办理服务中心】)为大家整理了关于这方面的知识,让我们一起来看下吧!
1、pos机出现应用程序界面
pos机出现应用程序界面完整的图形界面应用程序应该包括主窗口、菜单条、工具条、状态栏、窗口主题区域等元素。而菜单在图形界面编程中经常会用到,稍微复杂的应用程序一般都会有多个菜单项来执行各种不同的任务。菜单是由菜单条(GtkMenuBar)和从菜单条或其他菜单下拉的菜单(GtkMenu)组成。GTK+为我们提供了一套非常容易的设计菜单的方法,使用几行代码就可以为程序中添加多个菜单项。在这一节将介绍如何使用GTK+提供的方法来为窗口添加菜单条,并为菜单条添加多个菜单项,以及为菜单的项的信号添加回调函数。
在建立菜单条以前必须先建立应用程序的纵向组合框。在GTK+中向窗口中添加菜单的步骤一般是:
(1)创建菜单条(GtkMenuBar)
将菜单条加入到纵向的组合框中。使用函数gtk_menu_bar_new()建立GtkMenuBar构件。函数原型为:
GtkWidget * gtk_menu_bar_new(void);
//创建菜单条
menubar = gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE, FALSE, 0);
(2)创建菜单项。
当创建好菜单条后,此时的菜单条还是空的,还需要向菜单条中增加菜单项(GtkMenuItem)。使用gtk_menu_item_new_with_label建立一个带有标号的菜单项。例如我们经常在带有菜单条的程序中看到的“文件”菜单项,就可以使用下面这条语句来创建:
menuitem= gtk_menu_item_new_with_laibel(“文件”);
创建菜单项的函数原型为:
GtkWIdget * gtk_menu_item_new_with_label(const gchar*label);
label:菜单项的标号
(3)将菜单加入到菜单条中
在创建完菜单项后,这时就可以将它加入到前面建立的菜单条中了。使用gtk_menu_shell_append这个函数来将菜单项加入到菜单条中。
gtk_menu_bar_append(GTK_MENU_SHELL(menubar), menuitem);
其函数原型为:
void gtk_menu_shell_append(GtkMenuShell * menu, GtkWidget * child);
menu:菜单
child:菜单项
菜单创建
(4)创建菜单项,并加入到菜单中
一个简单的菜单条已经创建好了,但是我们知道大多数菜单还包括一个子菜单,这个子菜单只有在下拉菜单的时候才能看到,例如当我们选择“文件”菜单项时,会在下面出现一个子菜单。里面有新建、打开、保存等选项。如下图:
程序中的下拉子菜单
在GTK+编程中子菜单的创建方法是先建立包含新建、打开、保存、退出等选项的新菜单,然后用gtk_menu_item_set_submenu函数将新菜单和“文件”菜单项联系起来就可以了。
建立子菜单项和建立父菜单项的函数是一样的,都是使用gtk_menu_item_new_with_label。创建菜单则使用gtk_menu_new函数来创建。
创建菜单:GtkWidget * gtk_menu_new(void);
建立子菜单和父菜单项的联系:void gtk_menu_item_set_submenu(GtkMenuItem* menu_item, GtkWidget * submenu);
menu_item:父菜单项
submenu:子菜单
代码如下:
/*菜单的创建和使用*/
#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), "菜单条创建");
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);
//创建一个纵向的盒子容器
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(); //创建子菜单
CreatMenuItem(menu, "新建");
CreatMenuItem(menu, "打开");
CreatMenuItem(menu, "保存");
CreatMenuItem(menu, "退出");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);//将父菜单和子菜单联系起来
}
运行结果:
菜单和子菜单建立
(5)菜单项的信号
到现在为止,我们的菜单已经建立起来了,当然还有一项工作没有做,就是还没有对菜单项的信号进行处理。菜单项的信号不多,最常用的是“activate”信号,表示菜单被激活(被单击),也用g_signal_connect宏来连接,格式同按钮的“clicked”信号相同。例如当用户点击退出时,程序退出。
子菜单信号处理
这一节中用到的函数:
创建菜单条:gtk_menu_bar_new();
创建菜单:gtk_menu_new();
创建带有标号的菜单项:gtk_menu_item_new_with_label();
向菜单条加菜单:gtk_menu_shell_append();
设定菜单项的子菜单:gtk_menu_item_set_submenu();
创建菜单中的横线:gtk_separator_menu_item_new();
创建菜单中的虚线:gtk_tearoff_menu_item_new();
后两个函数在本例中没有出现,读者可以试着自己加进去。此外菜单项还有另外两种形式,单选菜单和多选菜单项。有兴趣的读者可以试着自己做一下。
以上就是关于pos机出现应用程序界面,用GTK+来创建一个带界面的C语言程序7——菜单的创建的知识,后面我们会继续为大家整理关于pos机出现应用程序界面的知识,希望能够帮助到大家!

版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。