Composants divers des composants GTK

Composants divers des composants GTK

1. étiquette étiquette

  Les étiquettes sont les widgets les plus couramment utilisés dans GTK, et elles sont en fait assez simples. Puisqu'il n'y a pas de fenêtre X associée, l'étiquette ne peut pas augmenter le signal. Si vous avez besoin d'obtenir ou d'élever un signal, vous pouvez le placer dans une boîte d'événement ou dans le widget du bouton.

1.1 Fonctions d'interface associées

/*创建标签*/
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 Exemple d'étiquette

insérez la description de l'image ici

#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. Flèches

  Le widget Flèche dessine une flèche orientée dans plusieurs directions différentes et avec plusieurs styles différents. Couramment utilisé pour créer des boutons avec des flèches dans de nombreuses applications. Comme le widget d'étiquette, il ne peut pas émettre de signaux.

/*创建箭头*/
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 Exemple de flèche

insérez la description de l'image ici
  Créez la flèche, placez la flèche dans le bouton, créez une boîte d'assemblage, placez le bouton dans la boîte.

#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 L'objet Tooltips L'objet Tooltips

  Les info-bulles sont des chaînes de texte qui s'affichent lorsque le pointeur de la souris passe sur un bouton ou un autre composant et y reste pendant quelques secondes.
  Les widgets qui ne reçoivent pas d'événements (widgets qui n'ont pas leur propre fenêtre X) ne peuvent pas fonctionner avec les objets d'info-bulle. Les objets d'info-bulle peuvent être créés à l'aide de la fonction gtk_tooltips_new(). Comme l'objet GtkTooltips peut être réutilisé, il n'est généralement nécessaire d'appeler cette fonction qu'une seule fois dans l'application.

3.1 Fonctions d'interface associées

/*创建工具提示对象,创建成功默认已经激活*/
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 Exemples

#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;
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44453694/article/details/127399273
conseillé
Classement