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 標簽示例
#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);
/*創建盒*/
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 箭頭示例
??創建箭頭,將箭頭放入按鈕中,再創建一個組裝盒,將按鈕放到盒中。
#include
gint window_event_callback(GtkWidget *widget,gpointer data)
{
g_print("close windown");
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
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.創建按鈕*/
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;
}
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
構件
+關注
關注
0文章
14瀏覽量
7801
發布評論請先 登錄
相關推薦
GTK+ 2.0 教程
滾動條構件 Scrollbar Widgets比例構件 Scale Widgets創建一個比例構件函數和信號(至少講了函數)常用的范圍函數設置更新方式獲得和設置調整對象鍵盤和鼠標綁定示例雜項
發表于 10-21 17:17
面向無線傳感網絡的構件化開發方法
摘要:構件化的開發模式使開發者在開發過程中能充分調用構件庫中現有的構件為其服務。研究了構件化開發模式的方法和特點,針對目前無線傳感器網絡協議開發方法中的缺陷,提出一種由應用層
發表于 11-02 15:43
嵌入式硬件構件與底層驅動構件相關資料推薦
慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.嵌入式硬件構件與底層驅動構件基本規范0 目錄2 入門與軟件框架2.1 嵌入式硬件構件與底層驅動構件基本規范2.1.1 課堂重點2
發表于 10-27 07:05
用構件方法進行GPIO應用編程
慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.用構件方法進行GPIO應用編程0 目錄2 入門與軟件框架2.3 用構件方法進行GPIO應用編程2.3.1 課堂重點2.3.2 測試與作業3 下一章0 目錄2 入門與軟件框架2.3 用
發表于 11-08 07:35
UART驅動構件的設計方法
慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.UART驅動構件的設計方法0 目錄2 入門與軟件框架2.1 UART驅動構件的設計方法2.1.1 課堂重點2.1.2 測試與作業3 下一章0
發表于 11-08 07:50
GPIO構件封裝方法與規范
文章目錄1、GPIO構件封裝方法與規范2、利用構件方法控制小燈閃爍3、工程文件組織框架與第一個C語言工程分析1、GPIO構件封裝方法與規范構件封裝建議、必要性與優點建議按底層硬件操作功
發表于 11-08 06:58
Flash在線編程構件的使用
慕課蘇州大學.嵌入式開發及應用.第三章.基本模塊.Flash在線編程構件的使用0 目錄3 基本模塊3.7 Flash在線編程構件的使用3.7.1 課堂重點3.7.2 測試與作業4 下一章0 目錄3
發表于 12-20 07:41
FLASH在線編程構件的設計方法
慕課蘇州大學.嵌入式開發及應用.第三章.基本模塊.FLASH在線編程構件的設計方法0 目錄3 基本模塊3.8 FLASH在線編程構件的設計方法3.8.1 課堂重點3.8.2 測試與作業4 下一章0
發表于 12-20 07:57
構件內聚性度量方法研究
構件的內聚性度量是衡量構件質量的一個重要指標。度量構件內聚度的經典方法程序切片,由于切片劃分的不同,其度量值不同。本文不僅很好地度量構件的內聚度且度量值唯一。
發表于 01-09 11:58
?7次下載
基于GTK+的組合構件設計
基于GTK+的組合構件設計
圖形用戶界面是用戶與儀器的唯一交互方式,也是整個嵌入式系統一個尤為重要的方面。GTK+即是一個應用于嵌入式圖形界面開發的良好圖形庫。在
發表于 10-15 08:55
?781次閱讀
基于狀態的EJB構件集成測試
針對構件源代碼的不可知性問題,該文提出了從構件規格說明、接VI中提取兩類測試信息,生成構件狀態測試用例,通過測試這兩類測試信息進行構件屬性分析和狀態判定,通過屬性一
發表于 04-17 22:44
?18次下載
GTK構件之雜項構件(2)
?GTK(GIMP Toolkit)是一套源碼以LGPL許可協議分發、跨平臺的圖形工具包。最初是為GIMP寫的,已成為一個功能強大、設計靈活的一個通用圖形庫,是GNU/Linux下開發圖形界面
GTK構件之微調按鈕
? 微調按鈕(Spin Button)構件通常用于讓用戶從一個取值范圍你選擇一個值。它由一個文本輸入框和旁邊的向上和向下兩個按鈕組成。點擊某一個按鈕會讓文本輸入框里的數值大小在一定范圍你改變。文本輸入框里也可以直接輸入一個特定值。
評論