Estou usando o Qt IDE para criar meu aplicativo e participar do concurso Ubuntu Showdown. No meu aplicativo, eu fiz o seguinte:
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));
}
Então, basicamente, estou tentando fazer uma entrada simples de indicador, que, ao clicar, oculta o indicador e exibe o aplicativo. O indicador pode ser ocultado com êxito usando o passivo lá, mas, durante a chamada data-> show ();, o aplicativo trava.
Qualquer ajuda sobre o que estou fazendo de errado seria apreciada! Além disso, ajude-me a corrigir esse problema que estou enfrentando (como alternativa, migrarei para o ícone antigo e bom da bandeja (que funciona bem na versão 12.04, de qualquer maneira)) que eu possa resolver com muita facilidade e eficiência)
Respostas:
Você não deve usar o libappindicator para criar um Indicador de Aplicativo nos programas Qt. Existe uma maneira melhor!
Se você tiver o sni-qt instalado, substituirá automaticamente as instâncias QSystemTrayIcon pelo código para renderizar o ícone da bandeja como um Item Notificador de Status do KDE , que o serviço Indicador de Aplicativo selecionará e mostrará na barra de menus do Ubuntu .
fonte
Eu diria que você tenta passar o ponteiro "this" como um ponteiro como "* this" aqui
para
fonte