GTK + 3.0 C ++相同的代码工作/崩溃,具体取决于具体情况

时间:2014-11-09 21:47:30

标签: c++ gtk

我在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);
}

0 个答案:

没有答案