私は、ダイアログをポップアップ表示しようとしているが失敗します。gtkmmのダイアログを実行すると、そのようgtkmmのを設定した後
MainWindow::MainWindow() : public Gtk::Window { //etc etc
とメインに()
Gtk::Main ginit(argc,argv);
MainWindow *mw = new MainWindow; // delcared as extern in header as well for the dialog
ginit.run(*mw);
必要なイベントが発生します 、次のコードは実行する必要がありますが失敗します。 http://library.gnome.org/devel/gtkmm-tutorial/2.21/sec-dialogs-filechooserdialog.html.enの例が完全にコンパイルされて実行されているので、奇妙です。
Gtk::FileChooserDialog *dlg = new Gtk::FileChooserDialog(Glib::ustring("choose destination"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
dlg->set_transient_for(*mw);
dlg->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
dlg->add_button(Glib::ustring("Select"), Gtk::RESPONSE_OK);
dlg->show_all_children();
int response =dlg->run();
GDBによると、すべてがdlg-> run()で失敗します。
(PCollab::4583):GLibの-GObjectの-CRITICAL **:g_object_ref:アサーション `G_IS_OBJECT(オブジェクト)」失敗した
そして、それは私の2つのエラーの1与え、それをより楽しく作ります(PCollab:4583):GLibの-GObjectの-WARNING ** :無効な非インスタンス化タイプ `-g型-民間のインスタンス - GTypeFlags'
(PCollab:4583):GLibの-GObjectの-CRITICAL **:g_signal_emit_valist:アサーション `G_TYPE_CHECK_INSTANCE(インスタンス) ' が失敗しました
(PCollab:4583):GLibの-GObjectのクリティカル **:g_object_unref:GLibの-GObjectのクリティカル **:g_object_ref:アサーションアサーション `G_IS_OBJECT(オブジェクト)は」
(:4583 PCollab)が失敗しました`G_IS_OBJECT(オブジェクト) 'が失敗した
(PCollab:4583):GLibの-GObjectの-WARNING ** :(ヌル)`無効な非インスタンス化タイプのインスタンスの
(PCollab:4583):GLib- GObject-CRITICAL **:g_signal_emit_valist:アサーション 'G_TYPE_CHECK_INSTANCE(インスタンス)'GLibの-GObjectのクリティカル **:g_object_unref:アサーション `G_IS_OBJECT(オブジェクト)」PCollabを失敗しました: 致命的IOエラー11(リソース 一時的に利用できない)Xサーバ で:0.は
(:4583 PCollab)が失敗しました。
だから私は一体何を考え出し、同じプログラムがX11に二回接続することができます(またはので、私は上読んいくつかの魔法をし
はsudoでxhost +
を走りましたすべて知っているインターネット)これはいくつか効果が、私が望むものではありません。今、それは私にはるかに多くの不可解な何かを与えるので は:
../../src/xcb_io.c: process_responses: Assertion `(((long) (dpy->last_request_read) - (long)(dpy->request)) <= 0)' failed.
私は、最初のエラーがそれはGTKによって対象とはみなされないようMwはGtkの::ウィンドウを指していないことを意味していることを前提としたいです実際には、Gtk :: Main ginit(* mw)を実行すると、mwがエラーなく画面に完全に表示されます。 私はこれが何を意味しているかわからないので、Gtk/X11のGuruがコードを修正する正しい方向に向けることを願っています。
その他の詳細は、私がGCC 4.4.5とこれは少し奇妙に見える2.4
にライン
を変更しようとしないでください、 'xhost +'はあなたのアプリケーションに特別なことをする必要はありません。 'dlg-> run()'のGDBに表示されるエラーは何ですか? –
プログラムでスレッドを使用していますか? – ptomato
@ptomato、私のプログラムの唯一のスレッドは、main()関数から実行されるGtk :: Mainループです。他のすべてはイベントベースであり、gtkループを通して呼び出されます。 – Michael