第98页的gtk+编程例子——滚动窗口

以下gtk+编程例子是来自书籍《实用技术:开发Linux应用——用GTK+和GDK开发Linux图形用户界面应用》第98页的内容——滚动窗口

无论搜索网上还是查看gtk3-demo的例子,很少单独使用scrollbar了,都是使用滚动窗口scrolled_window,自身带有水平滚动条和上下滚动条,触动鼠标滚轮也带动页面,静止很久时会自动隐藏滚动条的

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

/* the example on page 982 */

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

/* 程序主体 */
int main( int argc, char *argv[] )
{
	GtkWidget *window;
	/* 声明变量window为构件gtkwidget */
	GtkWidget *scrolled_window;
	GtkWidget *image;

	gtk_init (&argc, &argv);
	/* 初始化gtk */

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	/*  创建顶级窗口 */
	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
	/*  设置窗口位置为显示器的中间 */
	gtk_window_set_default_size (GTK_WINDOW (window), 1200, 900);
	/*  设置窗口的大小,横为1200像素,竖为900像素 */
	gtk_window_set_title (GTK_WINDOW (window), "滚动窗口scrolled_window");
	/*  为窗口顶部加上标题为滚动窗口scrolled_window  */
	g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
	/*  为窗口加上动作,当收到destroy信号,就启动gtk_main_quit事件,gtk_main_quit就是鼠标单击窗口右上角的关闭按钮就终止程序  */
	gtk_container_set_border_width (GTK_CONTAINER (window), 0);
	/*  简单的理解是将窗口变成容器,可以装入其它构件,构件边缘与窗口边缘的距离为0像数  */

	scrolled_window = gtk_scrolled_window_new (NULL, NULL);
	/*  创建滚动窗口,自动包含水平滚动条和上下滚动条,第一个水平滚动条的调整值为NULL,第二个上下滚动条的调整值为NULL */
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
	/* 设置水平滚动条和上下滚动条都为自动出现,就是当缩水窗口就会出现滚动条了 */
	gtk_container_add (GTK_CONTAINER (window), scrolled_window);
	/* 把滚动窗口装入主窗口 */
	
	image = gtk_image_new_from_file("./982.jpeg");
	/* 从网上随便下载一张大尺寸2376x1584的图片并改名为982.jpeg,page982.c与982.jpeg要在同一个文件夹,./表示在当前文件夹 */
	gtk_container_add (GTK_CONTAINER (scrolled_window), image);
	/* 把图片装入滚动窗口 */

	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、付费专栏及课程。

余额充值