gpt4 book ai didi

c - 在 GTK3+ 中显示信息对话框时出错

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:17 25 4
gpt4 key购买 nike

我试图在单击 gtk_drawing_area 时显示一个信息对话框窗口。

这是我使用的代码:

#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;
}

当我使用命令 gcc dialog.c pkg-config --cflags gtk+-3.0 --libs --libs cairo -lm -o dialog && 编译并运行这段代码时。/dialog 我在终端上得到以下信息:

段错误(核心转储)

关于我做错了什么有什么建议吗?

最佳答案

问题出在回调函数上。您正在使用以下原型(prototype):

void user_function(GtkWidget *widget, gpointer window)

它应该是,如 API reference 中所记录的那样:

gboolean user_function(GtkWidget *widget, GdkEvent *event, gpointer user_data)

调整你的回调,它应该是这样的:

gboolean show_dialog_window(GtkWidget *widget, GdkEvent *event, 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);
return TRUE;
}

返回 TRUE 将停止信号传播。

更改后,程序应该可以正常工作。您可以在event中访问事件信息,例如按下了哪个按钮等。

关于c - 在 GTK3+ 中显示信息对话框时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com