概述
以下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;
}
效果图如下
最后
以上就是冷静红牛为你收集整理的第73页的gtk+编程例子——菜单套件的全部内容,希望文章能够帮你解决第73页的gtk+编程例子——菜单套件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复