gpt4 book ai didi

c - c 中的 GTK+ - 如何确定在对话框中按下了哪个按钮?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:24 25 4
gpt4 key购买 nike

假设我创建了一个对话框

dialog = gtk_message_dialog_new(_, _, _, GTK_BUTTONS_YES_NO, _)

而且我想根据用户是按下“否”还是"is"来以不同方式处理响应。

我知道我可以将“响应”信号链接到回调

g_signal_connect_swapped (dialog, "response", G_CALLBACK (callback_function, NULL);

但是如何检查"is"按钮是否被按下?非常感谢您的帮助。

最佳答案

查看documentation of the response signal .你的函数原型(prototype)应该是:

void
user_function (GtkDialog *dialog,
gint response_id,
gpointer user_data)

为此,请使用 g_signal_connect(),而不是 g_signal_connect_swapped()。后者仅用于将函数与不匹配的原型(prototype)连接起来(恕我直言,这是 GTK+ 人员的一个非常糟糕的主意)。

那里,response_id 将是按下的按钮的标识符,如果消息被关闭,则为 GTK_RESPONSE_DELETE_EVENT

GtkMessageDialog 的情况下,按钮标识符是枚举值 GtkResponseType (GTK_RESPONSE_YESGTK_RESPONSE_NO 用于您的代码)。如果您使用自己的对话框和按钮,则可以使用其他标识符,但如果合理,建议使用标准标识符。

关于c - c 中的 GTK+ - 如何确定在对话框中按下了哪个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413738/

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