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では問題なく動作します))。
発生しているエラーは何ですか?
—
Hernantz、2012
エラーなし、それだけでクラッシュします:)
—
hytromo 2012
クラッシュのスタックトレースを質問に追加できますか?これは、アプリがクラッシュする正確な行を示します。それに関するヘルプが必要な場合は、このリンクdoc.qt.nokia.com/qtcreator-2.3/…を
結論:C ++アプリケーションでGTKとQtを混在させないでください。イベントループの構造はそれぞれ異なり、問題が発生するだけです。
—
Nathan Osman