1.標(biāo)簽 lable
??標(biāo)簽(Labels)是GTK中最常用的構(gòu)件,實(shí)際上它很簡(jiǎn)單。因?yàn)闆](méi)有相關(guān)聯(lián)的X窗口,標(biāo)簽不能引發(fā)信號(hào)。如果需要獲取或引發(fā)信號(hào),可以將它放在一個(gè)事件盒中,或放在按鈕構(gòu)件里面。
1.1 相關(guān)接口函數(shù)
/*創(chuàng)建標(biāo)簽*/
GtkWidget*gtk_label_new (const gchar *str);
GtkWidget*gtk_label_new_with_mnemonic (const gchar *str)
/*設(shè)置標(biāo)簽對(duì)齊方式*/
void gtk_label_set_justify (GtkLabel *label,GtkJustification jtype);
jtype參數(shù):
GTK_JUSTIFY_LEFT,//左對(duì)齊
GTK_JUSTIFY_RIGHT,//右對(duì)齊
GTK_JUSTIFY_CENTER,//居中
GTK_JUSTIFY_FILL//充滿
/*獲取標(biāo)簽內(nèi)容*/
const gchar *gtk_label_get_label (GtkLabel *label)
/*設(shè)置標(biāo)簽自動(dòng)換行*/
void gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap)
/*添加下劃線*/
voidgtk_label_set_pattern (GtkLabel *label,const gchar *pattern)
1.2 標(biāo)簽示例
#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);
/*創(chuàng)建盒*/
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);
/*創(chuàng)建一個(gè)框架構(gòu)件*/
frame=gtk_frame_new("標(biāo)簽1");
label=gtk_label_new("這是一個(gè)框構(gòu)件!");
/*添加下劃線*/
gtk_label_set_pattern (GTK_LABEL(label),"_______________________");
/*將標(biāo)簽放入框架構(gòu)件中*/
gtk_container_add(GTK_CONTAINER(frame),label);
/*將框架構(gòu)件放入組裝盒中*/
gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);
/*創(chuàng)建框架構(gòu)件*/
frame=gtk_frame_new("名言");
label=gtk_label_new("與其臨淵羨魚(yú),n 不如退而結(jié)網(wǎng)!");
gtk_container_add(GTK_CONTAINER(frame),label);
gtk_box_pack_start(GTK_BOX(vbox),frame,FALSE,FALSE,0);
/*創(chuàng)建框架構(gòu)件*/
frame=gtk_frame_new("左對(duì)齊");
label=gtk_label_new("種一棵樹(shù)最好的時(shí)間時(shí)十年前,n"
"其次是現(xià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);
/*創(chuàng)建框架構(gòu)件*/
frame=gtk_frame_new("右對(duì)齊");
label=gtk_label_new("GTK 標(biāo)簽n右對(duì)齊示例");
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("將進(jìn)酒");
/*設(shè)置輪廓樣式*/
gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
label=gtk_label_new("李白n"
"君不見(jiàn)黃河之水天上來(lái),奔流到海不復(fù)回。n"
"君不見(jiàn)高堂明鏡悲白發(fā),朝如青絲暮成雪。n"
"人生得意須盡歡,莫使金樽空對(duì)月。n"
"天生我材必有用,千金散盡還復(fù)來(lái)。n"
"天生我材必有用,千金散盡還復(fù)來(lái)。n"
"烹羊宰牛且為樂(lè),會(huì)須一飲三百杯。n"
"岑夫子,丹丘生,將進(jìn)酒,杯莫停。n"
"與君歌一曲,請(qǐng)君為我傾耳聽(tīng)。n"
"鐘鼓饌玉不足貴,但愿長(zhǎng)醉不愿醒。n"
"古來(lái)圣賢皆寂寞,惟有飲者留其名。n"
"陳王昔時(shí)宴平樂(lè),斗酒十千恣歡謔。n"
"主人何為言少錢(qián),徑須沽取對(duì)君酌。n"
"五花馬,千金裘,呼兒將出換美酒,與爾同銷(xiāo)萬(wà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
??箭頭構(gòu)件(Arrow widget)畫(huà)一個(gè)箭頭,面向幾種不同的方向,并有幾種不同的風(fēng)格。在許多應(yīng)用程序中,常用于創(chuàng)建帶箭頭的按鈕。和標(biāo)簽構(gòu)件一樣,它不能引發(fā)信號(hào)。
/*創(chuàng)建箭頭*/
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 --無(wú)箭頭
shadow_type --箭頭風(fēng)格
/*設(shè)置箭頭屬性*/
gtk_arrow_set(GtkArrow * arrow, GtkArrowType arrow_type, GtkShadowType shadow_type)
2.1 箭頭示例
??創(chuàng)建箭頭,將箭頭放入按鈕中,再創(chuàng)建一個(gè)組裝盒,將按鈕放到盒中。
#include
gint window_event_callback(GtkWidget *widget,gpointer data)
{
g_print("close windown");
return FALSE;
}
void Window_close_callback(GtkObject *obj)
{
gtk_main_quit();
}
/*創(chuàng)建一個(gè)帶箭頭的按鈕
GtkArrowType --箭頭方向
GtkShadowType --箭頭輪廓
返回值:返回按鈕對(duì)象
*/
GtkWidget *gtk_Arrow_button_create(GtkArrowType arrow_type,GtkShadowType shadow_type)
{
GtkWidget *button;
GtkWidget *arrow;
/*1.創(chuàng)建按鈕*/
button=gtk_button_new();
/*創(chuàng)建箭頭*/
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.創(chuàng)建橫向盒*/
hbox=gtk_hbox_new(FALSE,0);
//將盒添加到窗口
gtk_container_add(GTK_CONTAINER(window),hbox);
/*2.創(chuàng)建帶箭頭按鈕*/
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 工具提示對(duì)象The Tooltips Object
? 工具提示對(duì)象(Tooltips)就是當(dāng) 鼠標(biāo)指針移到按鈕或其它構(gòu)件上并停留幾秒時(shí),彈出的文本串。
不接收事件的構(gòu)件(沒(méi)有自己的X窗口的構(gòu)件)不能和工具提示對(duì)象一起工作。可以使用 gtk_tooltips_new()函數(shù)創(chuàng)建工具提示對(duì)象。因?yàn)镚tkTooltips對(duì)象可以重復(fù)使用,一般在應(yīng)用程序中僅需要調(diào)用這個(gè)函數(shù)一次。
3.1 相關(guān)接口函數(shù)
/*創(chuàng)建工具提示對(duì)象,創(chuàng)建成功默認(rèn)已經(jīng)激活*/
GtkTooltips *gtk_tooltips_new( void );
/*設(shè)置提示信息*/
void gtk_tooltips_set_tip( GtkTooltips *tooltips,GtkWidget *widget,const
gchar *tip_text,const gchar *tip_private );
形參:tooltips --創(chuàng)建的工具提示對(duì)象
widget --要設(shè)置提示信息的構(gòu)件
tip_text --提示的內(nèi)容
tip_private --標(biāo)識(shí)符的文本串,當(dāng)用GtkTipsQuery實(shí)現(xiàn)上下文敏感的幫助時(shí)要引用該標(biāo)識(shí)符。目前,你可以把它設(shè)置為 NULL.
/*激活已經(jīng)禁用的工具提示對(duì)象*/
void gtk_tooltips_enable( GtkTooltips *tooltips);
/*禁用已經(jīng)激活的工具提示對(duì)象*/
void gtk_tooltips_disable( GtkTooltips *tooltips );
/*改變工具提示的延遲時(shí)間*/
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.創(chuàng)建按鈕*/
button=gtk_button_new_from_stock(GTK_STOCK_QUIT);
gtk_container_add(GTK_CONTAINER(window),button);
/*創(chuàng)建提示對(duì)象工具*/
tiptool=gtk_tooltips_new();
/*添加提示信息到按鈕*/
gtk_tooltips_set_tip(tiptool,button,"退出按鈕",NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
審核編輯:湯梓紅
-
構(gòu)件
+關(guān)注
關(guān)注
0文章
14瀏覽量
7771
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論