Test zu images auf Buttons. GTK+
-
Hallo..
ich weiß nicht woran es liegt dass folgender Quelltext nicht kompilierbar ist...#include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> #include <gtk/gtkwidget.h> void delete_event(GtkWidget *widget, GdkEvent event, gpointer data) { gtk_main_quit(); } int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkWidget *button1; GtkWidget *button2; GtkWidget *button3; GtkWidget *window; GtkWidget *image; GtkWidget *box; image = gtk_image_new_from_file("/home/schuller/workspace/wave.gif"); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button1 = gtk_button_new_with_label("O"); button2 = gtk_button_new_with_label("O"); button3 = gtk_button_new_with_label("O"); /*Bilder zuweisen*/ gtk_button_set_image(button1, image); gtk_button_set_image(button2, image); gtk_button_set_image(button3, image); gtk_box_pack_start(GTK_BOX(box), button1, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), button2, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), button3, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(window),box); gtk_widget_show_all(window); gtk_main(); return(0); }
//UPDATE
habe ein paar Fehler gefundenXXXXXX@XXXXXX:~> ./Schiffeversenken/button-image/Debug/button-image Speicherzugriffsfehler
Des weiteren, weiß ich auch hier nicht weiter...
--> http://www.c-plusplus.net/forum/viewtopic-var-t-is-179762.html
-
Dann ist es ja doch kompilierbar?! Woran das jetzt im Moment liegt, kann ich dir grad ohne Compiler nicht sagen.
Sonst geh mal mit'm Debugger drüber, dann findest du immerhin schon mal raus, wo genau der Segfault auftritt.
-
Einfach mal debuggen
In Zeile 35 benutzt du box obwohl es noch gar nicht initialisiert ist, z.B. so:GtkWidget *box = gtk_vbox_new(FALSE, 0);
-
Öhm
soweit ich sehe ist die doch initialisiert?! O_o
. . . GtkWidget *box; . . . gtk_box_pack_start(GTK_BOX(box), button1, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), button2, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), button3, FALSE, FALSE, 0); . .
Oder ist das falsch?
-
Das ist falsch. joomoo hat schon recht, mit GtkWidget *box wird nur ein Zeiger auf ein GtkWidget angelegt. Das eigentliche GtkWidget existiert noch nicht und muss erst mittels gtk_vbox_new(...) erstellt werden.