按按钮更改 window 标题不起作用

Changing window title on button press does not work

我正在使用带有 glade 和 gtk+ 的 anjuta。

我正在尝试在我的应用程序中获取更改 window 标题的按钮:

void changetitle(GtkWidget *win)
{
gtk_window_set_title(GTK_WINDOW(win),"My Window"); 
    FILE *fh = fopen("/tmp/output.txt", "w");
  fclose(fh);
}

我正在尝试获取执行此操作的按钮,但我似乎无法将 window 作为参数传递。

这是我尝试过的方法:

第二个功能(创建文件)似乎有效。

来自GTK+ 3 Reference Manual

The “clicked” signal

void
user_function (GtkButton *button,
               gpointer   user_data)

这意味着,当调用回调函数时,传递给它的第一个参数将是按钮,而不是 window。

要解决此问题,您有两种选择:

您可以将 changetitle 更改为以下内容:

void changetitle(GtkButton *button, gpointer win) { //...

(即不要两者一起做),在Glade中连接信号时,勾选"swap"框:

通过这样做,参数的顺序将被交换,因此第一个参数将是您指定的数据(即 window),第二个参数(未在您的回调中指定功能,因此无关紧要)将是您的按钮。