C++,将g_signal_connect事件正确添加到按钮

C++, Add g_signal_connect event correcty to a button

本文关键字:添加 按钮 事件 connect signal C++      更新时间:2023-10-16

我使用gtk创建了一个窗口,然后我想向按钮添加点击事件。我尝试了几种方法,但没有成功

#if GTK_CHECK_VERSION(3,0,0)
    GtkBuilder* builder = newDialogBuilder("smartart.ui");
#else
    GtkBuilder* builder = newDialogBuilder("smartart-2.ui");
#endif
window = GTK_WIDGET(gtk_builder_get_object(builder, "smartartDlg"));
spin = GTK_WIDGET(gtk_builder_get_object(builder, "summarySpin"));
m_btOk=GTK_WIDGET(gtk_builder_get_object(builder, "btOk"));
m_btClose=GTK_WIDGET(gtk_builder_get_object(builder, "btClose"));

然后我尝试使用下面的代码添加信号

 g_signal_connect (GTK_DIALOG (m_btClose), "response",G_CALLBACK(Smartart__onCloseClicked),NUll);

然后它编译,但给出运行时错误

我的Smartart__onCloseClicked方法低于

void
Smartart__onCloseClicked (GtkButton * /*button*/,gpointer   data)
{
    fprintf(stderr, "Close button clicked");
}
GtkButton点击的正确事件应该是clicked

g_signal_connect (G_OBJECT (m_btClose), "clicked",G_CALLBACK(Smartart__onCloseClicked),NULL);

refer:GtkButton reference