I THI U V GTK+
Ệ
t k và đ
ầ
ử ụ
ế ế
ng ng
ộ
ươ ươ
ộ
ế
ấ
t riêng b công ộ
c g i là b công c GIMP
ệ
ư ắ ầ ọ
ượ
ụ
t l
i đ h ế ạ ể ướ
ố ượ
ượ
ế c vi c đ i tên thành GTK+.
ổ
ừ
ề
ầ
ộ
ề ự ng đ i t
ướ
ữ ộ ố
ự ệ ố
ữ ậ
GI Ề Ớ -GTK có tên đ y đ là Gimp Toolkit . ủ ầ c s d ng trong ch c thi -GTK ban đ u đ ượ ượ trình GNU Manipulation Program (GIMP) nh là m t ch ư trình thay th cho b công c Motif.Nh ng v sau Peter ề ụ Mattis th y th t v ng v MoTif và b t đ u vi ế ề ấ ọ c giao di n đ h a c a ông đ ộ ủ ồ ọ ụ và đã thành công thay th Motif.Và trong b n phát hành 0,99 ả c a GIMP GTK đã đ ng h n và ng đ i t ủ ơ đ ượ -GTK+ là m t ph n m m v a miên phí v a đ c quy n,là ừ ộ m t ph n n m trong d án GNU(GNU's Not Unix). GTK+ bao ằ ầ ộ ng d a trên ngôn ng C có g m m t c u trúc h ố ượ ộ ấ ồ s linh ho t tuy t v i và có quan h đ i tác v i m t s ngôn ệ ờ ớ ạ ự ng l p trình nh C + +, Objective-C, Perl, Python, TOM, ư Ada95, Free Pascal , Eiffel, vv
H
NG D N CÀI Đ T
ƯỚ
Ẫ
Ặ
ặ
Cài đ t online: -Ta dùng l nh:ệ
sudo apt-get install libgtk3.0-dev
Đ l p trình giao di n v i toolkit GTK thì ta c n thêm: ể ậ ệ ầ ớ
sudo apt-get install gnome-core-devel
ư ệ ữ ầ
Cái này s cài libgtk2.0-dev, libglib2.0-dev..., nh ng th vi n c n thi t cho l p trình GTK. ế
ẽ ậ sudo apt-get install pkg-config
ượ ự
ộ c dùng đ biên d ch các GTK procedures và t ị ị ư ệ ủ
ng d n GTK devhelp . R t h u ích. Cái này s cài tài li u h pkg-config đ ể đ ng xác đ nh v trí c a các th vi n và head file. ị sudo apt-get install devhelp ướ ấ ữ ẽ ệ ẫ
sudo apt-get install libglib2.0-doc libgtk2.0-doc
ẽ ệ ợ
Cái này s cài API reference manuals và các tài li u tr giúp cho gtk / glib.
sudo apt-get install glade libglade2-dev sudo apt-get install glade ế ế ụ ặ t k giao di n d a vào GTK (tên ự ệ ẽ
Cái này s cài đ t công c thi ng trình là Glade). ch ươ
H ng d n vi
ng trình
ướ
ẫ
ế
ươ
ộ ạ đ n gi n
t và ch y m t vài ch ả
ơ
ươ
• Ch • Chúng ta s vi
ể
ộ
ộ
ươ
ng trình hi n lên m t c a s ổ
ộ ử
ệ
ng trình s 1: ố t m t m t đo n mã đ ch ạ ẽ ế window tên la ThanhHung:
#include
}
GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0;
Cách biên dich
i th m c ch a file chúng ta v a t o ẫ ớ ư ụ ừ ạ ứ
• Chúng ta dùng lenh cd /d n t • Sau đó dùng câu l nh:ệ
– gcc thanhhung.c -o ThanhHung `pkg-config gtk+-2.0 --cflags
--libs` -I/usr/include/libglade-2.0/ -lglade-2.0
thanh trên cùng c a – thanhhung:là tên file chúng ta t o ra. – ThanhHung:là tên chúng ta mu n hi n ra ệ ạ ố ở ủ
window.
• Ch ng trinh s 2 k th a trên ch ng trình s 1:Ta thêm 2 button ươ ế ừ ố ươ
ế ố ả ẽ ệ
và 1 Label,2 button là nút + và -,label và k t qu s hi n ra trên Label.
#include
gint count = 0; char buf[5];
void increase(GtkWidget *widget, gpointer label){
count++;
sprintf(buf, "%d", count); gtk_label_set_text(label, buf);}
void decrease(GtkWidget *widget, gpointer label){ count--;
sprintf(buf, "%d", count); gtk_label_set_text(label, buf);}
•
ở ạ
ổ ể ử ạ ị
int main(int argc, char** argv) { GtkWidget *label; GtkWidget *window; GtkWidget *frame; GtkWidget *plus; GtkWidget *minus; /* kh i t o GTK */ gtk_init(&argc, &argv); /* T o c a s hi n th */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 250, 180); gtk_window_set_title(GTK_WINDOW(window), "+-");
frame = gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(window), frame);
plus = gtk_button_new_with_label("+"); gtk_widget_set_size_request(plus, 80, 35); gtk_fixed_put(GTK_FIXED(frame), plus, 50, 20);}
ầ
minus = gtk_button_new_with_label("-"); gtk_widget_set_size_request(minus, 80, 35); gtk_fixed_put(GTK_FIXED(frame), minus, 50, 80); /* khai báo lable lúc đ u = 0 */ label = gtk_label_new("0"); gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);
gtk_widget_show_all(window);
g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect(plus, "clicked", G_CALLBACK(increase), label);
g_signal_connect(minus, "clicked",
G_CALLBACK(decrease), label);
gtk_main();
return 0;}
• Glade Glade g m nhi u nhóm công c xây d ng
ề
ự
ư
ụ ạ
ụ
ạ
ơ
ướ ị
ạ
ả
ồ giao di n nh textbox, nhãn tho i, m c nh p ệ ậ d ng s , h p ch n và th c đ n. B n thi t k ự ế ế ố ộ ả ọ i đ nh d ng XML (có giao di n đ c l u d ượ ư ệ c trên các công c khác). Cài đ t th m đ ặ ụ ể ở ượ Glade cũng r t đ n gi n: ấ ơ 1.sudo apt-get install glade-2 2.sudo apt-get install autoconf automake libglib2.0-dev libc6-dev libgtk2.0-dev
#include
"main_window", NULL);
glade_xml_signal_autoconnect(ui); gtk_main(); return 0; }