2012-07-03 1 views
2

2 개의 포럼에서 시도했지만 지금까지 행운이 없었습니다.GTK app : Qt/C++로 작업 표시기를 만들려면 어떻게해야합니까?

그래서 Ubuntu 마무리 대회에 참가할 수 있도록 내 응용 프로그램을 빌드하기 위해 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)); 
} 

: 내 응용 프로그램에서 나는 다음과 같은 완료했습니다. 표시기는 거기 저쪽에있는 패시브를 사용하여 성공적으로 감추어 질 수 있지만, 데이터 호출 -> show(); 동안 응용 프로그램이 충돌합니다.

내가 뭘 잘못하고 있는지에 대한 도움을 주시면 감사하겠습니다! 또한, 내가 직면하고있는이 문제를 바로 잡을 수 있도록 도와주세요. (대안으로, 나는 아주 쉽고 효율적으로 처리 할 수있는 우분투 12.04에서 잘 작동하는 오래된 트레이 아이콘으로 마이그레이션 할 것입니다.)

+0

어떻게 작동시키는 지 자세히 설명해 주시겠습니까? – Goddard

+1

@Goddard http://bit.ly/1dQggw1 소스를 다운로드하고 nongui.cpp에서 표시기를 검색하십시오. – hakermania

답변

1

void callback(GtkMenuItem *, gpointer) 

그래서 show_app이 문제를 해결해야이

void show_app(GtkMenuItem *showapp_option, MainWindow *data) 

같이 정의해야 다음 activate 신호에 대한 콜백은 다음과 같은 유형을 가질 필요가있다.

관련 문제