GIỚ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
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
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).
Hướ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;
}
Cá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.
•
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);}
•
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ế
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
![]()
#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;
}
![]()
The 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