C++ GTK应用程序:如何使用Qt/C++;?

C++ GTK应用程序:如何使用Qt/C++;?,c++,c,qt,gtk,indicator,C++,C,Qt,Gtk,Indicator,我已经在两个论坛上试过了,但到目前为止我运气不好 因此,我使用QtIDE来构建我的应用程序,以便参加Ubuntu决战比赛。在我的应用程序中,我完成了以下操作: void show_app(MainWindow *data) { //this works fine: app_indicator_set_status(appindicator, APP_INDICATOR_STATUS_PASSIVE); //this crashes the application:

我已经在两个论坛上试过了,但到目前为止我运气不好

因此,我使用QtIDE来构建我的应用程序,以便参加Ubuntu决战比赛。在我的应用程序中,我完成了以下操作:

    void show_app(MainWindow *data)
{
    //this works fine:
    app_indicator_set_status(appindicator, APP_INDICATOR_STATUS_PASSIVE);
    //this crashes the application:
    data->show();
}


void MainWindow::make_indicator()
{
    if(appindicator){
        //appindicator has already been created
        return;
    }
    appindicator = app_indicator_new("Format Junkie Indicator", "formatjunkie", APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
    GtkWidget* showapp_option;
    GtkWidget* indicatormenu = gtk_menu_new();
    GtkWidget* item = gtk_menu_item_new_with_label("Format Junkie main menu");
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), indicatormenu);

    showapp_option = gtk_menu_item_new_with_label("Show App!");
    g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), this);
    gtk_menu_shell_append(GTK_MENU_SHELL(indicatormenu), showapp_option);

    gtk_widget_show_all(indicatormenu);
    app_indicator_set_status(appindicator, APP_INDICATOR_STATUS_ACTIVE);
    app_indicator_set_attention_icon(appindicator, "dialog-warning");

    app_indicator_set_menu(appindicator, GTK_MENU (indicatormenu));
}
因此,我基本上是在尝试创建一个简单的指标条目,单击它,它将隐藏指标并显示应用程序。可以使用那边的被动元素成功隐藏指示器,但是,在调用data->show();,应用程序崩溃


对于我做错了什么,任何帮助都将不胜感激!另外,请帮助我纠正我面临的这个问题(或者,我将迁移到旧的、好的托盘图标(无论如何,它在Ubuntu 12.04中运行良好),我可以非常轻松有效地处理它)

激活信号的回调需要具有以下类型:

void callback(GtkMenuItem *, gpointer)
所以
show\u app
应该这样定义

void show_app(GtkMenuItem *showapp_option, MainWindow *data)

这应该可以解决你的问题。

你能详细说明一下你是如何做到这一点的吗?@Goddard下载源代码并在nongui.cpp上搜索指示器