首页 > 其他分享 >GTK构件之杂项构件

GTK构件之杂项构件

时间:2022-10-19 12:31:28浏览次数:51  
标签:GTK FALSE gtk label window 构件 new 杂项

GTK构件之杂项构件

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 标签示例

GTK构件之杂项构件_标签label

#include <gtk/gtk.h>
gint window_event_callback(GtkWidget *widget,gpointer data)
{
g_print("close window\n");
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 箭头示例

GTK构件之杂项构件_GTK_02

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

#include <gtk/gtk.h>
gint window_event_callback(GtkWidget *widget,gpointer data)
{
g_print("close window\n");
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 <gtk/gtk.h>
gint window_event_callback(GtkWidget *widget,gpointer data)
{
g_print("close window\n");
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;
}





标签:GTK,FALSE,gtk,label,window,构件,new,杂项
From: https://blog.51cto.com/u_15688123/5769606

相关文章

  • [杂项]罗斯福对日宣战演讲
    Yesterday,December7,1941-adate,whichwillliveininfamy-theUnitedStatesofAmericawassuddenlyanddeliberatelyattackedbynavalandairforces......
  • [杂项]Moon Halo
    \[\large\mathit{Some~deserts~on~this~planet~were~oceans~once}\]\[\large\mathit{Somewhere~shrouded~by~the~night,~the~sun~will~shine}\]\[\large\mathit{Sometime......
  • UML _ 组件图/构件图
    概述组件定义组件(Component/构件)是系统设计的一个模块化部分,并对外提供了一组接口。组件是一个独立的封装单位(封装性),是系统中可替换的物理单元(替换性),需要遵循并......
  • 算法数学笔记-零、常用数表及杂项
    目录零、常用数表及杂项常用数表牛顿迭代牛顿广义二项式定理一些结论范德蒙德卷复数相乘突然发现博客园可以存笔记,这样就可以避免出门没带电脑而又想看笔记的情况了,还方便......
  • GTK入门学习:信号与回调函数
    前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数。GTK采用了信号与回调函数来处理窗口外部传来的事件......
  • GTK进阶学习:键盘事件
    键盘事件,可以理解为操作键盘的动作。对于窗口而言,用户操作键盘,窗口检测到键盘的操作(产生一个信号),然后去做相应处理(调用其规定的回调函数),即可认为是键盘事件,还是信号......
  • Go语言图形界面开发:Go版GTK
    初识GTK​​01、GUI概述​​​​02、GTK简介​​​​03、环境搭建(windows)​​Go语言快速入门​​04、Go入门教程​​HelloGTK​​05、一个简单的空白窗口​​​​06、控......
  • C语言也能做界面:踏上GTK+学习之旅
    ​​00、背上行囊1——程序员学习之道​​​​01、背上行囊2——为什么要学习GTK​​​​02、背上行囊3——​​​​GUI概述​​​​03、背上行囊4——GTK简介​​​​04、......
  • GTK入门学习:glade的环境搭建
    1)Linux环境搭建在线安装即可,安装命令如下:测试是否安装成功,在终端敲glade即可:2)windows版本环境搭建下载一个windows版本双击后一直“下一步”安装即可。需要注意的是,如果......
  • GTK简单版计算器
    接下来我们做一个简单版的计算器。1)获取按钮上的内容。2)如果获取的内容是“c”,则代表进行退格操作,相当于删去最后一个字符。3)如果获取的内容不是“c”,则把每一次获取的......