-GTK ban đầu được thiết kế và được sử dụng trong chương trình GNU Manipulation Program GIMP như là một chương trình thay thế cho bộ công cụ Motif.Nhưng về sau Peter Mattis thấy thất vọn
Trang 1GIỚI THIỆU VỀ GTK+
-GTK có tên đầy đủ là Gimp Toolkit
-GTK ban đầu được thiết kế và được sử dụng trong chương trình GNU Manipulation Program (GIMP) như là một chương 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ết riêng bộ công
cụ giao diện đồ họa của ông được gọi là bộ công cụ GIMP
và đã thành công thay thế Motif.Và trong bản phát hành 0,99 của GIMP GTK đã được viết lại để hướng đối tượng hơn và được đổi tên thành GTK+.
-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 gồm một cấu trúc hướng đối tượng dựa trên ngôn ngữ C có 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
Trang 2HƯỚ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
pkg-config được dùng để biên dịch các GTK procedures và tự động xác định vị trí của các thư viện và head file
sudo apt-get install devhelp
Cái này sẽ cài tài liệu hướng dẫn GTK devhelp Rất hữu ích
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
Cái này sẽ cài đặt công cụ thiết kế giao diện dựa vào GTK (tên chương trình là Glade)
Trang 3Hướng dẫn viết và chạy một vài chương trình
đơn giản
• Chương trình số 1:
• Chúng ta sẽ viết một một đoạn mã để chương trình hiện lên một cửa sổ window tên la ThanhHung:
#include <gtk/gtk.h>
int main( int argc, char *argv[]) {
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window); gtk_main();
return 0;
}
Trang 4Cách biên dich
• Chúng ta dùng lenh cd /dẫn tới thư mục chứa file chúng ta vừa tạo
• 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
– thanhhung:là tên file chúng ta tạo ra
– ThanhHung:là tên chúng ta muốn hiện ra ở thanh trên cùng của window
Trang 5• 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 <gtk/gtk.h>
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);}
Trang 6• 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);}
Trang 7minus = 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;}
Trang 8• 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ế giao diện được lưu dưới định dạng XML (có thể mở được trên các công cụ khác) Cài đặt 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
Trang 10#include <gtk/gtk.h>
#include <glade/glade.h>
int main (int argc, char *argv[])
{ GladeXML *ui;
gtk_init(&argc, &argv);
ui = glade_xml_new ("glade_hello.glade",
"main_window", NULL);
glade_xml_signal_autoconnect(ui);
gtk_main();
return 0;
}
Trang 12The end
• Cám ơn các bạn và quí thầy cô đã quan tâm theo dõi
Tài liệu tham khảo:
www.glade.gnome.org
www.gtk.org
http://wingtk.sourceforge.net/ishan/starting.html