GTK コンポーネントのその他のコンポーネント

GTK コンポーネントのその他のコンポーネント

1.ラベルラベル

  ラベルは 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 ラベルの例

ここに画像の説明を挿入

#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. 矢

  矢印ウィジェットは、いくつかの異なる方向を向いた、いくつかの異なるスタイルで矢印を描画します。多くのアプリケーションで矢印付きのボタンを作成するために一般的に使用されます。ラベル ウィジェットと同様に、シグナルを発生させることはできません。

/*创建箭头*/
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 矢印の例

ここに画像の説明を挿入
  矢印を作成し、矢印をボタンに配置し、組み立てボックスを作成し、ボタンをボックスに配置します。

#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 ツールチップ オブジェクト ツールチップ オブジェクト

  ツールチップは、マウス ポインタがボタンまたは他のコンポーネント上に移動し、そこに数秒間留まるとポップアップされるテキスト文字列です。
  イベントを受信しないウィジェット (独自の X ウィンドウを持たないウィジェット) は、ツールチップ オブジェクトを操作できません。ツールチップ オブジェクトは、 gtk_tooltips_new() 関数を使用して作成できます。GtkTooltips オブジェクトは再利用できるため、通常はアプリケーション内でこの関数を 1 回呼び出すだけで済みます。

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

おすすめ

転載: blog.csdn.net/weixin_44453694/article/details/127399273