Estoy usando Qt IDE para construir mi aplicación y participar en el concurso Ubuntu Showdown. En mi aplicación, hice lo siguiente:
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));
}
Entonces, básicamente estoy tratando de hacer una entrada de indicador simple, que, al hacer clic, ocultará el indicador y mostrará la aplicación. El indicador se puede ocultar con éxito usando la cosa PASIVA allí, pero, durante la llamada de datos-> show () ;, la aplicación se bloquea.
¡Cualquier ayuda sobre lo que estoy haciendo mal sería apreciada! Además, ayúdenme a corregir este problema que estoy enfrentando (alternativamente, migraré al icono de bandeja antiguo y bueno (de todos modos funciona bien en 12.04) que puedo manejar de manera muy fácil y eficiente)
Respuestas:
No debe usar libappindicator para crear un indicador de aplicación en programas Qt. ¡Hay una mejor manera!
Si tiene instalado sni -qt, esto reemplazará automáticamente las instancias de QSystemTrayIcon con el código para representar ese icono de la bandeja como un elemento de notificación de estado de KDE , que el servicio Indicador de aplicación recogerá y mostrará en la barra de menú de Ubuntu .
fuente
Diría que intentas pasar el puntero "this" como un puntero como "* this" aquí
a
fuente