如何使用 Qt/C++ 创建工作指标?

hyt*_*omo 8 indicator application-development appindicator

我正在使用 Qt IDE 来构建我的应用程序,以便参加 Ubuntu Showdown 竞赛。在我的应用程序中,我完成了以下操作:

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));
}
Run Code Online (Sandbox Code Playgroud)

所以,基本上我正在尝试创建一个简单的指标条目,点击后,它将隐藏指标并显示应用程序。可以使用那边的 PASSIVE 东西成功隐藏指标,但是,在调用 data->show(); 期间,应用程序崩溃。

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

Ted*_*uld 9

您不应该使用libappindicator在 Qt 程序中创建应用程序指示器。有更好的方法!

如果您安装了sni-qt,它会自动将QSystemTrayIcon实例替换为将托盘图标呈现为KDE 状态通知程序项的代码应用程序指示器服务将选择并显示在Ubuntu 菜单栏中

  • 这个包(sni-qt)现在坏了。 (2认同)
  • “还有更好的办法!” Qt5 没有,没有。 (2认同)