[1]Source code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <gtk/gtk.h> void on_window_closed (GtkWidget *window, gpointer data) { gtk_main_quit(); } static void destroy(GtkWidget *widget, gpointer data) { gtk_main_quit(); } static void button_clicked(GtkWidget *button, gpointer data) { g_print("Button clicked\n"); } int main (int argc, char *argv[]) { GtkWidget *window, *label, *box, *button ; gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW (window), "Test GTK"); gtk_window_set_default_size (GTK_WINDOW (window), 500, 200); #if 1 //Use gtk3: change 0->1, Use gtk2: keep it is 0 //Using gtk3 box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); #else //Using gtk2 box = gtk_vbox_new(GTK_ORIENTATION_VERTICAL, 5); #endif label = gtk_label_new("Label name"); button = gtk_button_new_with_label ("CLOSE"); g_signal_connect(GTK_BUTTON(button), "clicked", G_CALLBACK(button_clicked), NULL); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); g_signal_connect(window, "destroy", G_CALLBACK(destroy), NULL); gtk_box_pack_start(GTK_BOX (box), label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX (box), button, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER (window), box); gtk_widget_show_all(window); gtk_main(); return 0; } |
[2]How to build
Open terminal and type below commandFor gtk2
g++ test1.cpp -o hello-1 `pkg-config --cflags --libs gtk+-2.0`
For gtk3
g++ test1.cpp -o hello-1 `pkg-config --cflags --libs gtk+-3.0`
[3]Error may happened !
Problemtest1.cpp: In function ‘int main(int, char**)’:
test1.cpp:32:50: error: ‘gtk_box_new’ was not declared in this scope
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
1 2 3 4 | g++ test1.cpp -o hello-1 `pkg-config --cflags --libs gtk+-2.0` test1.cpp: In function ‘int main(int, char**)’: test1.cpp:32:50: error: ‘gtk_box_new’ was not declared in this scope box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); |
Root cause:
source code is mismatched with gtk version.
Remember, gtk2 is not support API gtk_box_new()
Enjoy.
Keyword: gtk2, gtk3, GtkBox, GtkLabel, GtkButton,
Reference: http://xlpiao.blogspot.com/2016/02/gtk3-example.html
Comments
Post a Comment