1.標簽 lable
??標簽(Labels)是GTK中最常用的構(gòu)件,實際上它很簡單。因為沒有相關(guān)聯(lián)的X窗口,標簽不能引發(fā)信號。如果需要獲取或引發(fā)信號,可以將它放在一個事件盒中,或放在按鈕構(gòu)件里面。
1.1 相關(guān)接口函數(shù)
/*創(chuàng)建標簽*/
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參數(shù):
GTK_JUSTIFY_LEFT,//左對齊
GTK_JUSTIFY_RIGHT,//右對齊
GTK_JUSTIFY_CENTER,//居中
GTK_JUSTIFY_FILL//充滿
/*獲取標簽內(nèi)容*/
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
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òu)件*/
frame=gtk_frame_new("標簽1");
label=gtk_label_new("這是一個框構(gòu)件!");
/*添加下劃線*/
gtk_label_set_pattern (GTK_LABEL(label),"_______________________");
/*將標簽放入框架構(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("與其臨淵羨魚,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("左對齊");
label=gtk_label_new("種一棵樹最好的時間時十年前,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("右對齊");
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"
"君不見高堂明鏡悲白發(fā),朝如青絲暮成雪。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
??箭頭構(gòu)件(Arrow widget)畫一個箭頭,面向幾種不同的方向,并有幾種不同的風格。在許多應用程序中,常用于創(chuàng)建帶箭頭的按鈕。和標簽構(gòu)件一樣,它不能引發(fā)信號。
/*創(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 --無箭頭
shadow_type --箭頭風格
/*設置箭頭屬性*/
gtk_arrow_set(GtkArrow * arrow, GtkArrowType arrow_type, GtkShadowType shadow_type)
2.1 箭頭示例

??創(chuàng)建箭頭,將箭頭放入按鈕中,再創(chuàng)建一個組裝盒,將按鈕放到盒中。
#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)建一個帶箭頭的按鈕
GtkArrowType --箭頭方向
GtkShadowType --箭頭輪廓
返回值:返回按鈕對象
*/
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 工具提示對象The Tooltips Object
? 工具提示對象(Tooltips)就是當 鼠標指針移到按鈕或其它構(gòu)件上并停留幾秒時,彈出的文本串。
不接收事件的構(gòu)件(沒有自己的X窗口的構(gòu)件)不能和工具提示對象一起工作??梢允褂?gtk_tooltips_new()函數(shù)創(chuàng)建工具提示對象。因為GtkTooltips對象可以重復使用,一般在應用程序中僅需要調(diào)用這個函數(shù)一次。
3.1 相關(guān)接口函數(shù)
/*創(chuàng)建工具提示對象,創(chuàng)建成功默認已經(jīng)激活*/
GtkTooltips *gtk_tooltips_new( void );
/*設置提示信息*/
void gtk_tooltips_set_tip( GtkTooltips *tooltips,GtkWidget *widget,const
gchar *tip_text,const gchar *tip_private );
形參:tooltips --創(chuàng)建的工具提示對象
widget --要設置提示信息的構(gòu)件
tip_text --提示的內(nèi)容
tip_private --標識符的文本串,當用GtkTipsQuery實現(xiàn)上下文敏感的幫助時要引用該標識符。目前,你可以把它設置為 NULL.
/*激活已經(jīng)禁用的工具提示對象*/
void gtk_tooltips_enable( GtkTooltips *tooltips);
/*禁用已經(jīng)激活的工具提示對象*/
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.創(chuàng)建按鈕*/
button=gtk_button_new_from_stock(GTK_STOCK_QUIT);
gtk_container_add(GTK_CONTAINER(window),button);
/*創(chuàng)建提示對象工具*/
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瀏覽量
7836
發(fā)布評論請先 登錄
相關(guān)推薦
GTK+ 2.0 教程
面向無線傳感網(wǎng)絡的構(gòu)件化開發(fā)方法
嵌入式硬件構(gòu)件與底層驅(qū)動構(gòu)件相關(guān)資料推薦
嵌入式硬件構(gòu)件與底層驅(qū)動構(gòu)件
用構(gòu)件方法進行GPIO應用編程
UART驅(qū)動構(gòu)件的設計方法
GPIO構(gòu)件封裝方法與規(guī)范
Flash在線編程構(gòu)件的使用
FLASH在線編程構(gòu)件的設計方法
構(gòu)件內(nèi)聚性度量方法研究
基于GTK+的組合構(gòu)件設計

基于狀態(tài)的EJB構(gòu)件集成測試
嵌入式硬件構(gòu)件與底層驅(qū)動構(gòu)件基本規(guī)范

GTK構(gòu)件之雜項構(gòu)件(2)

GTK構(gòu)件之微調(diào)按鈕

評論