Ich versuche, ein Info-Dialogfenster anzuzeigen, wenn auf den gtk_drawing_area geklickt wird. HierFehler beim Anzeigen des Info-Dialogs in GTK3 +
ist der Code, ich verwende:
#include <cairo.h>
#include <gtk/gtk.h>
void show_dialog_window(GtkWidget *widget, gpointer window) {
GtkWidget *dialog;
dialog = gtk_message_dialog_new(GTK_WINDOW(window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"Hello dialog!");
gtk_window_set_title(GTK_WINDOW(dialog), "Information");
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *darea;
gtk_init(&argc, &argv);
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), 400, 300);
gtk_window_set_title(GTK_WINDOW(window), "Click me to show an Info_Dialog");
darea = gtk_drawing_area_new();
gtk_container_add(GTK_CONTAINER(window), darea);
gtk_widget_add_events(window, GDK_BUTTON_PRESS_MASK);
g_signal_connect(window, "destroy",
G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(window, "button-press-event",
G_CALLBACK(show_dialog_window), (gpointer) window);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Wenn ich kompilieren und diesen Code ausführen mit dem Befehl gcc dialog.c pkg-config --cflags gtk+-3.0 --libs --libs cairo
-Im -o Dialog & & ./dialog ich folgende auf dem Terminal:
Segmentation fault (core dumped)
Jeder Vorschlag, was ich falsch mache?
Verwenden Sie 'gdb' und' valgrind', um Ihren Code zu debuggen. Suchen Sie die Zeile, die den Fehler verursacht, und starten Sie von dort aus –
Das Hinzufügen der Parameter '-Wall' und' -Wextra' zu 'gcc' könnte eine gute Idee sein – purplepsycho