0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GTK构件之杂项构件

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-11-25 10:20 次阅读

1.标签 lable

  标签(Labels)是GTK中最常用的构件,实际上它很简单。因为没有相关联的X窗口,标签不能引发信号。如果需要获取或引发信号,可以将它放在一个事件盒中,或放在按钮构件里面。

1.1 相关接口函数

/*创建标签*/
GtkWidget*gtk_label_new (const gchar *str);
GtkWidget*gtk_label_new_with_mnemonic (const gchar *str)
/*设置标签对齐方式*/
void gtk_label_set_justify (GtkLabel *label,GtkJustification jtype);
  jtype参数:
    GTK_JUSTIFY_LEFT,//左对齐
    GTK_JUSTIFY_RIGHT,//右对齐
    GTK_JUSTIFY_CENTER,//居中
GTK_JUSTIFY_FILL//充满
/*获取标签内容*/
const gchar *gtk_label_get_label (GtkLabel *label)
/*设置标签自动换行*/
void gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap)
/*添加下划线*/
voidgtk_label_set_pattern (GtkLabel *label,const gchar *pattern)

1.2 标签示例

pYYBAGOAJoeAACkdAAGLuouDHn4241.png#pic_center
#include 
gint window_event_callback(GtkWidget *widget,gpointer data)
{
	g_print("close windown");
	return FALSE;
}
void Window_close_callback(GtkObject *obj)
{
	gtk_main_quit();
}
int main(int argc,char **argv)
{

	GtkWidget *window;
	GtkWidget *hbox,*vbox;
	GtkWidget *frame;
	GtkWidget *label;
	gtk_init(&argc,&argv);
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"GTK");
	gtk_container_set_border_width(GTK_CONTAINER(window),2);
	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(window_event_callback),NULL);
	g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(Window_close_callback),NULL);

	/*创建盒*/
	hbox=gtk_hbox_new(FALSE,2);
	vbox=gtk_vbox_new(FALSE,2);
	/*将横向盒添加到窗口*/
	gtk_container_add(GTK_CONTAINER(window),hbox);
	/*将纵向盒放入横向盒中*/
	gtk_box_pack_start(GTK_BOX(hbox),vbox,FALSE,FALSE,2);
	/*创建一个框架构件*/
	frame=gtk_frame_new("标签1");
	label=gtk_label_new("这是一个框构件!");
   /*添加下划线*/
	gtk_label_set_pattern (GTK_LABEL(label),"_______________________");
	/*将标签放入框架构件中*/
	gtk_container_add(GTK_CONTAINER(frame),label);
	/*将框架构件放入组装盒中*/
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);

	/*创建框架构件*/
	frame=gtk_frame_new("名言");
	label=gtk_label_new("与其临渊羡鱼,n    不如退而结网!");
	gtk_container_add(GTK_CONTAINER(frame),label);
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);

	/*创建框架构件*/
	frame=gtk_frame_new("左对齐");
	label=gtk_label_new("种一棵树最好的时间时十年前,n"
						"其次是现在。");
	gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT);
	gtk_container_add(GTK_CONTAINER(frame),label);
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);

	/*创建框架构件*/
	frame=gtk_frame_new("右对齐");
	label=gtk_label_new("GTK 标签n右对齐示例");
	gtk_container_add(GTK_CONTAINER(frame),label);
	gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_RIGHT);
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);
	
	vbox=gtk_vbox_new(FALSE,5);
	gtk_box_pack_start(GTK_BOX(hbox),vbox,FALSE,FALSE,5);
	frame=gtk_frame_new("将进酒");
	/*设置轮廓样式*/
	gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
	label=gtk_label_new("李白n"

		"君不见黄河之水天上来,奔流到海不复回。n"
		"君不见高堂明镜悲白发,朝如青丝暮成雪。n"
		"人生得意须尽欢,莫使金樽空对月。n"
		"天生我材必有用,千金散尽还复来。n"
		"天生我材必有用,千金散尽还复来。n"
		"烹羊宰牛且为乐,会须一饮三百杯。n"
		"岑夫子,丹丘生,将进酒,杯莫停。n"
		"与君歌一曲,请君为我倾耳听。n"
		"钟鼓馔玉不足贵,但愿长醉不愿醒。n"
		"古来圣贤皆寂寞,惟有饮者留其名。n"
		"陈王昔时宴平乐,斗酒十千恣欢谑。n"
		"主人何为言少钱,径须沽取对君酌。n"
		"五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。");
	gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_CENTER);
	gtk_container_add(GTK_CONTAINER(frame),label);
	gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);
	
	gtk_widget_show_all(window);
	gtk_main();
	return 0;
}

2.箭头Arrows

  箭头构件(Arrow widget)画一个箭头,面向几种不同的方向,并有几种不同的风格。在许多应用程序中,常用于创建带箭头的按钮。和标签构件一样,它不能引发信号。

/*创建箭头*/
GtkWidget*gtk_arrow_new (GtkArrowType arrow_type,GtkShadowType shadow_type);
形参:
     arrow_type  --箭头方向
         GTK_ARROW_UP,  --上
         GTK_ARROW_DOWN,  --下
         GTK_ARROW_LEFT,  --左
         GTK_ARROW_RIGHT, --右
         GTK_ARROW_NONE  --无箭头
         shadow_type  --箭头风格
/*设置箭头属性*/
gtk_arrow_set(GtkArrow * arrow, GtkArrowType arrow_type, GtkShadowType shadow_type)

2.1 箭头示例

poYBAGOAJoiAPAwWAAAmBKv6IDM753.png#pic_center

  创建箭头,将箭头放入按钮中,再创建一个组装盒,将按钮放到盒中。

#include 
gint window_event_callback(GtkWidget *widget,gpointer data)
{
	g_print("close windown");
	return FALSE;
}
void Window_close_callback(GtkObject *obj)
{
	gtk_main_quit();
}
/*创建一个带箭头的按钮
GtkArrowType --箭头方向
GtkShadowType --箭头轮廓
返回值:返回按钮对象

*/
GtkWidget *gtk_Arrow_button_create(GtkArrowType arrow_type,GtkShadowType shadow_type)
{
	GtkWidget *button;
	GtkWidget *arrow;
	/*1.创建按钮*/
	button=gtk_button_new();
	/*创建箭头*/
	arrow=gtk_arrow_new(arrow_type, shadow_type);
	/*将箭头放入按钮中*/
	gtk_container_add(GTK_CONTAINER(button),arrow);
	gtk_widget_show(arrow);
	gtk_widget_show(arrow);
	return button;
}
int main(int argc,char **argv)
{

	GtkWidget *window;
	GtkWidget *hbox;
	GtkWidget *button;
	gtk_init(&argc,&argv);
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"GTK");
	gtk_container_set_border_width(GTK_CONTAINER(window),2);
	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(window_event_callback),NULL);
	g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(Window_close_callback),NULL);
	/*1.创建横向盒*/
	hbox=gtk_hbox_new(FALSE,0);
	//将盒添加到窗口
	gtk_container_add(GTK_CONTAINER(window),hbox);
	/*2.创建带箭头按钮*/
	button=gtk_Arrow_button_create(GTK_ARROW_UP,GTK_SHADOW_IN);
	gtk_box_pack_start(GTK_BOX(hbox),button, TRUE,FALSE,5);

	button=gtk_Arrow_button_create(GTK_ARROW_DOWN,GTK_SHADOW_OUT);
	gtk_box_pack_start(GTK_BOX(hbox),button, TRUE,FALSE,5);

	button=gtk_Arrow_button_create(GTK_ARROW_LEFT,GTK_SHADOW_ETCHED_IN);
	gtk_box_pack_start(GTK_BOX(hbox),button, TRUE,FALSE,5);

	button=gtk_Arrow_button_create(GTK_ARROW_RIGHT,GTK_SHADOW_ETCHED_OUT);
	gtk_box_pack_start(GTK_BOX(hbox),button, TRUE,FALSE,5);
	
	gtk_widget_show_all(window);
	gtk_main();
	return 0;
}

3 工具提示对象The Tooltips Object

  工具提示对象(Tooltips)就是当 鼠标指针移到按钮或其它构件上并停留几秒时,弹出的文本串。

不接收事件的构件(没有自己的X窗口的构件)不能和工具提示对象一起工作。可以使用 gtk_tooltips_new()函数创建工具提示对象。因为GtkTooltips对象可以重复使用,一般在应用程序中仅需要调用这个函数一次。

3.1 相关接口函数

/*创建工具提示对象,创建成功默认已经激活*/
GtkTooltips *gtk_tooltips_new( void );
/*设置提示信息*/
void gtk_tooltips_set_tip( GtkTooltips *tooltips,GtkWidget *widget,const 
gchar *tip_text,const gchar *tip_private );
形参:tooltips  --创建的工具提示对象
      widget  --要设置提示信息的构件
      tip_text  --提示的内容
      tip_private --标识符的文本串,当用GtkTipsQuery实现上下文敏感的帮助时要引用该标识符。目前,你可以把它设置为 NULL. 
/*激活已经禁用的工具提示对象*/
void gtk_tooltips_enable( GtkTooltips *tooltips);
/*禁用已经激活的工具提示对象*/
void gtk_tooltips_disable( GtkTooltips *tooltips ); 
/*改变工具提示的延迟时间*/
void gtk_tooltips_set_delay(GtkTooltips *tooltips,guint delay);

3.2 示例

#include 
gint window_event_callback(GtkWidget *widget,gpointer data)
{
	g_print("close windown");
	return FALSE;
}
void Window_close_callback(GtkObject *obj)
{
	gtk_main_quit();
}

int main(int argc,char **argv)
{
	GtkWidget *window;
	GtkWidget *button;
	GtkTooltips *tiptool;
	gtk_init(&argc,&argv);
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"GTK");
	gtk_container_set_border_width(GTK_CONTAINER(window),2);
	g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(window_event_callback),NULL);
	g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(Window_close_callback),NULL);
	/*1.创建按钮*/
	button=gtk_button_new_from_stock(GTK_STOCK_QUIT);
	gtk_container_add(GTK_CONTAINER(window),button);
	/*创建提示对象工具*/
	tiptool=gtk_tooltips_new();
	/*添加提示信息到按钮*/
	gtk_tooltips_set_tip(tiptool,button,"退出按钮",NULL);

	gtk_widget_show_all(window);
	gtk_main();
	return 0;
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 构件
    +关注

    关注

    0

    文章

    14

    浏览量

    7771
收藏 人收藏

    评论

    相关推荐

    GTK+ 2.0 教程

    滚动条构件 Scrollbar Widgets比例构件 Scale Widgets创建一个比例构件函数和信号(至少讲了函数)常用的范围函数设置更新方式获得和设置调整对象键盘和鼠标绑定示例杂项
    发表于 10-21 17:17

    面向无线传感网络的构件化开发方法

    摘要:构件化的开发模式使开发者在开发过程中能充分调用构件库中现有的构件为其服务。研究了构件化开发模式的方法和特点,针对目前无线传感器网络协议开发方法中的缺陷,提出一种由应用层
    发表于 11-02 15:43

    嵌入式硬件构件与底层驱动构件相关资料推荐

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.嵌入式硬件构件与底层驱动构件基本规范0 目录2 入门与软件框架2.1 嵌入式硬件构件与底层驱动构件基本规范2.1.1 课堂重点2
    发表于 10-27 07:05

    嵌入式硬件构件与底层驱动构件

    嵌入式硬件构件与底层驱动构件基本规范构件化设计嵌入式硬件构件核心构件中间构件终端
    发表于 10-27 09:01

    构件方法进行GPIO应用编程

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.用构件方法进行GPIO应用编程0 目录2 入门与软件框架2.3 用构件方法进行GPIO应用编程2.3.1 课堂重点2.3.2 测试与作业3 下一章0 目录2 入门与软件框架2.3 用
    发表于 11-08 07:35

    UART驱动构件的设计方法

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.UART驱动构件的设计方法0 目录2 入门与软件框架2.1 UART驱动构件的设计方法2.1.1 课堂重点2.1.2 测试与作业3 下一章0
    发表于 11-08 07:50

    GPIO构件封装方法与规范

    文章目录1、GPIO构件封装方法与规范2、利用构件方法控制小灯闪烁3、工程文件组织框架与第一个C语言工程分析1、GPIO构件封装方法与规范构件封装建议、必要性与优点建议按底层硬件操作功
    发表于 11-08 06:58

    Flash在线编程构件的使用

    慕课苏州大学.嵌入式开发及应用.第三章.基本模块.Flash在线编程构件的使用0 目录3 基本模块3.7 Flash在线编程构件的使用3.7.1 课堂重点3.7.2 测试与作业4 下一章0 目录3
    发表于 12-20 07:41

    FLASH在线编程构件的设计方法

    慕课苏州大学.嵌入式开发及应用.第三章.基本模块.FLASH在线编程构件的设计方法0 目录3 基本模块3.8 FLASH在线编程构件的设计方法3.8.1 课堂重点3.8.2 测试与作业4 下一章0
    发表于 12-20 07:57

    构件内聚性度量方法研究

    构件的内聚性度量是衡量构件质量的一个重要指标。度量构件内聚度的经典方法程序切片,由于切片划分的不同,其度量值不同。本文不仅很好地度量构件的内聚度且度量值唯一。
    发表于 01-09 11:58 7次下载

    基于GTK+的组合构件设计

    基于GTK+的组合构件设计 图形用户界面是用户与仪器的唯一交互方式,也是整个嵌入式系统一个尤为重要的方面。GTK+即是一个应用于嵌入式图形界面开发的良好图形库。在
    发表于 10-15 08:55 772次阅读
    基于<b class='flag-5'>GTK</b>+的组合<b class='flag-5'>构件</b>设计

    嵌入式硬件构件与底层驱动构件基本规范

    嵌入式硬件构件与底层驱动构件基本规范构件化设计嵌入式硬件构件核心构件中间构件终端
    发表于 10-20 13:36 6次下载
    嵌入式硬件<b class='flag-5'>构件</b>与底层驱动<b class='flag-5'>构件</b>基本规范

    GTK构件杂项构件(2)

    GTK(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面
    的头像 发表于 11-27 07:53 1028次阅读
    <b class='flag-5'>GTK</b><b class='flag-5'>构件</b><b class='flag-5'>之</b><b class='flag-5'>杂项</b><b class='flag-5'>构件</b>(2)

    GTK构件微调按钮

      微调按钮(Spin Button)构件通常用于让用户从一个取值范围你选择一个值。它由一个文本输入框和旁边的向上和向下两个按钮组成。点击某一个按钮会让文本输入框里的数值大小在一定范围你改变。文本输入框里也可以直接输入一个特定值。
    的头像 发表于 11-30 09:50 1296次阅读
    <b class='flag-5'>GTK</b><b class='flag-5'>构件</b><b class='flag-5'>之</b>微调按钮

    GTK渲染摄像头图像数据

    —— Linux的API是Xlib。由于GTK和机器的API之间没有直接接口,移植GTK+就成为移植GLIB和GDK的问题。GDK提供像元的绘制能力以及低层的窗口建立和处理能力。对许多应用来说,使用构件
    的头像 发表于 12-01 09:19 1161次阅读