- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
此代码创建了一个程序,该程序创建一个带有标签的窗口,如果您单击该标签,该程序将执行作为 g_signal_connect(G_OBJECT(eventbox), "button_press_event", G_CALLBACK(on_event_clicked), buffer)
参数传递的缓冲区的 fprintf。 .以前程序将字符串“Hello Word”放入缓冲区,然后程序应该打印此消息,但程序可能只打印乱码。我哪里错了?
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
void on_event_clicked (GtkWidget* widget, gpointer user_data);
int main (int argc, char **argv) {
GtkWidget *window;
GtkWidget *eventbox;
GtkWidget *label;
char* buffer = malloc(sizeof(char)*10);
strcpy(buffer, "Hello Word\0");
gtk_init (&argc,&argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
label = gtk_label_new ("Hello Word");
eventbox = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER(eventbox), label);
gtk_container_add (GTK_CONTAINER(window), eventbox);
gtk_widget_show_all (window);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(eventbox), "button_press_event",
G_CALLBACK(on_event_clicked), buffer);
gtk_main();
return 0;
}
void on_event_clicked (GtkWidget *widget, gpointer user_data) {
char* pn = user_data;
fprintf(stderr, "%s\n", pn);
}
最佳答案
on_event_clicked()
的原型(prototype)是错误的,它与 GTK+ 的预期不符。
应该是:
gboolean user_function (GtkWidget *widget, GdkEvent *event, gpointer user_data);
您需要将缺少的参数添加到您的函数中,并处理返回值的要求。记得read the signal documentation认真的。
关于c - GTK - 如何将参数传递给 GtkEventBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671632/
我有一个 GTK+2 程序,它结合了 GtkScrolledWindow 和 GtkLayout。效果很好。但是,我发现如果我将 GtkEvent 对象放入 GtkLayout,它将无法正常显示。有人
此代码创建了一个程序,该程序创建一个带有标签的窗口,如果您单击该标签,该程序将执行作为 g_signal_connect(G_OBJECT(eventbox), "button_press_event
在 GTK 对话框中,我将 GtkLabel 包裹在 GtkEventBox 中,以便它可以接收点击事件(导航到网页以获取更多信息)。从功能上讲,它工作得很好。 但是,当我将标签添加到事件框时,标签的
我有一个包含 2 个项目的 GtkHBox。在里面,在左边,我有一个包含 4 个项目的 GtkHBox。前两个是 GtkEventBox,然后是 GtkHScale,最后是 GtkLabel。 两个
我想在 GtkEventBox 中设置 GtkWindow 的不透明度。 gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), TRUE)
我正在尝试通过 Glade 将 GtkEventBox 的 enter-notify-event 连接到附加的 GAction。使用 GtkInspector 检查正在运行的应用程序显示没有任何连接到
使用 GTK,我试图在 GtkScrolledWindow< 中包含的 GtkTextView 的一角覆盖“更多”提示(但它也可以是任何绘图对象)/。我在处理程序中为 TextView 的 expos
我是一名优秀的程序员,十分优秀!