第73页的gtk+编程例子——菜单套件

以下gtk+编程例子是来自书籍《实用技术:开发Linux应用——用GTK+和GDK开发Linux图形用户界面应用》第73页的内容——菜单套件

书中的菜单套件item_factory和GtkItemFactoryEntry已经不使用了,从gtk2.4开始被GtkUIManager取代,从gtk3.10开始停止使用GtkUIManager了,接着被GtkBuilder取代,GtkBuilder是使用xml文件,而xml文件是.ui或.glade为后缀的文本文件,是由gladd程序创建的

主要是参考《GTK入门学习:glade的使用》https://blog.csdn.net/tennysonsky/article/details/43019923,还有参考gtk3-demo中Builder例子中的源代码

ruhong@localhost:~> cd gtk
ruhong@localhost:~/gtk> ls page73*
page73.glade page73.c builder01.glade
有两个文件page73.glade和page73.c,都是文本文件,而且要在同一个文件夹gtk下
ruhong@localhost:~/gtk> gtk3-demo &
[1] 7826
双击左边的Builder就会跳出一个窗口显示这个例子程序的运行效果,再回到刚才的主界面,单击右上方的demo.ui就能看到源代码了,用鼠标全选复制到新建的文本文件中,保存时以文件名为builder01.glade

从普通用户切换到root用户安装glade
ruhong@localhost:~> su -
密码:
localhost:~ # zypper search glade
localhost:~ # zypper install glade
Loading repository data…
Reading installed packages…
Resolving package dependencies…

The following 3 NEW packages are going to be installed:
glade glade-catalog-anjuta glade-lang

Checking for file conflicts: …[done]
(1/3) Installing: glade-3.22.1-2.45.x86_64 …[done]
(2/3) Installing: glade-lang-3.22.1-2.45.noarch …[done]
(3/3) Installing: glade-catalog-anjuta-3.28.0-bp153.1.35.x86_64 …[done]

回到桌面——Applications——编程——Glade——打开——选择builder01.glade文件——打开
单击左上角的加号新建一个工程,然后就是依葫芦画瓢,画出以下菜单,最后保存为page73.glade
来回单击上方两个工程标签,是可以将builder01的小组件复制粘贴到page73.glade的

粥 粉 面 饭 其它
白粥 螺蛳粉 牛腩面 叉烧饭 云吞
猪红粥 桂林米粉 兰州拉面 扬州炒饭 萝卜糕
八宝粥 肠粉 捞面 煲仔饭 粽
艇仔粥 汤粉 竹升面 蒸饭 油炸鬼
皮蛋瘦肉粥 炒粉 刀削面 竹筒饭 蛋塔
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在openSUSE-Leap-15.3-DVD-x86_64的gnome3.34.7桌面环境下编译的,其中pkg-config --cflags --libs gtk±3.0两边有反引号括起来的
ruhong@localhost:~/gtk> gcc page73.c -o page73 pkg-config --cflags --libs gtk±3.0
ruhong@localhost:~/gtk> ./page73

/* the example on page 73 */

#include <gtk/gtk.h>
/* 准备材料,自定义函数  */
	/*  comments注释  */

/* 程序主体 */
int main( int argc, char *argv[] )
{
	GtkWidget *window;
	/* 声明变量window为构件gtkwidget */
	GtkBuilder *builder;
	/* 声明变量builder为gtkbuilder类型 */
	gtk_init (&argc, &argv);
	/* 初始化gtk */

	builder = gtk_builder_new_from_file ("./page73.glade");
	/* 读取page73.glade的文件内容,page73.glade是xml文件描述gtk界面布局的 */
	window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
	/* 将page73.glade关于界面的描述加载到主窗口中,注意page73.glade文件中对应window的名称是window1 */
	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
	/*  设置窗口位置为显示器的中间 */
	gtk_window_set_default_size(GTK_WINDOW(window), 500, 200);
	/*  设置窗口的大小,横为500像素,竖为200像素 */
	g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
	/*  为窗口加上动作,当收到destroy信号,就启动gtk_main_quit事件,gtk_main_quit就是鼠标单击窗口右上角的关闭按钮就终止程序  */
	gtk_widget_show_all (window);
	/*  显示构件窗口包括所有构件  */
	gtk_main ();
	/*  进入主循环,等待信号(鼠标键盘)输入  */
	return 0;
}

效果图如下
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值