按下按钮时更改窗口标题不起作用

时间:2015-05-27 21:17:49

标签: c gtk glade anjuta

我正在使用anjuta和glade以及gtk +。

我正试图让我的应用程序中的按钮更改窗口标题:

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

我正试图让按钮执行此操作,但我似乎没有将窗口作为参数传递。

这是我尝试过的:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

来自GTK+ 3 Reference Manual

  

Artist信号

“clicked”

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

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

您可以将void user_function (GtkButton *button, gpointer user_data) 更改为以下内容:

changetitle

(即不要同时进行),在连接信号时在Glade中,选中“交换”框:

screenshot: connect "swap" button in Glade

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