我在GTK遇到了另一个问题。函数programClose()
可以通过多种方式调用:
// File->Quit
g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(programClose), &data);
// User closed app by clicking red X mark on title bar
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(programClose), &data);
programClose()
看起来像这样:
void programClose(GtkMenuItem *quit, fileData *data)
{
if(data->isSaved != true)
{
showSaveFileDialog(NULL, data);
}
}
然后在showSaveFileDialog()
:
void showSaveFileDialog(GtkMenuItem *saveFile, fileData *data)
{
cout << data->someBool; // ok
cout << data->someString; // crashes here
}
我尝试通过点击X来制作另一个关闭应用的功能,但这没有帮助:
void programClose(GtkWindow *window, fileData *data)
任何sugestions?
编辑:
大声笑,忘记提及当用户通过点击文件关闭应用程序时一切正常 - >退出,程序仅在单击红色X标记时崩溃
好的我自己修好了。问题是我忘记了回调函数签名。所以我通过单击红色X来创建用于关闭程序的包装函数:
void programCloseByX(GtkWindow *window, GdkEvent *event, fileData *data)
{
programClose(NULL, data);
}