태그 보관물: appindicator

appindicator

Qt / C ++로 작동 지표를 작성하는 방법 has already been

Ubuntu Showdown 공모전에 참여하기 위해 응용 프로그램을 빌드하기 위해 Qt IDE를 사용하고 있습니다. 내 응용 프로그램에서 다음을 수행했습니다.

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

따라서 기본적으로 간단한 지표 항목을 만들려고합니다. 클릭하면 지표가 숨겨지고 응용 프로그램이 표시됩니다. PASSIVE 항목을 사용하여 표시기를 숨길 수 있지만, data-> show (); 호출 중에 응용 프로그램이 중단됩니다.

내가 잘못하고있는 것에 대한 도움을 주시면 감사하겠습니다! 또한 내가 직면하고있는이 문제를 해결하도록 도와주십시오 (또는 대안으로 오래되고 좋은 트레이 아이콘 (12.04에서 잘 작동합니다)으로 매우 쉽고 효율적으로 처리 할 수 ​​있습니다)



답변

Qt 프로그램에서 어플리케이션 인디케이터를 작성하기 위해 libappindicator 를 사용해서는 안됩니다 . 더 좋은 방법이 있습니다!

당신이있는 경우 SNI를-Qt는 그것이 자동적으로 대체합니다 설치 QSystemTrayIcon의 A와 그 트레이 아이콘을 렌더링하기위한 코드 인스턴스를 KDE 항목 알리미 상태 1, 응용 프로그램 표시 에서 서비스가 데리러와 쇼 우분투 메뉴 모음 .


답변

“this”포인터를 “* this”와 같은 포인터로 전달하려고합니다.

g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), this);

g_signal_connect(showapp_option, "activate", G_CALLBACK(show_app), *this);


답변