2017-07-17 7 views
0

Gladeを使用してGTK GUIを構築しました。これはアプリケーションで使用できる* .gladeファイルがあることを意味します。私はそれらとやりとりするウィジェットを手に入れることができましたが、シグナルハンドラをメニューエントリにどのように接続できるかについてはわかりません。gtkmm/glade - シグナルハンドラをMenuShellに接続する

接続したい信号は、メニュー項目をクリックしたときに放射される信号です。あなたがあなたのウェブブラウザでやっているのと同じように、ファイルに行き、1つのエントリをクリックします。

そのイベントの名前は何ですか、そしてgtkmm関数は何を呼び出すのですか? 私はどの要素と対話しようとすべきか混乱しています。それはGtkMenu、GtkMenuShell ...ですか? Gladeのインターフェースからそれを行うことはできますか?

最初はイベントがactivate-currentだと思っていましたので、ボタンのclickedイベントのように、論理的に接続するメソッドを使用しようとしました。

Gtk::MenuShell* help_menu; p_builder->get_widget("helpMenu", help_menu); help_menu->signal_activate_current().connect(sigc::ptr_fun(&on_help_menu_activate_current));

src/GUI.cpp:11:16: error: ‘class Gtk::MenuShell’ has no member named ‘signal_activate_current’ help_menu->signal_activate_current().connect(sigc::ptr_fun(&on_help_menu_activate_current));

答えて

0

GtkMenuShellは、あなたはおそらくGtkMenuまたはを探している、抽象クラスである:メソッドが存在しないため、ここで

は、動作していないコードですGtkMenuBar。両方とも実装GtkMenuShell

メニューの項目はGtkMenuItemであり、あなたはおそらくは、これらの項目から信号を「活性化」をお勧めします。

The MenuItem widget and the derived widgets are the only valid children for menus.

Their function is to correctly handle highlighting, alignment, events and submenus.

Glade経由でコールバック名を設定し、GtkBuilderメソッドを使用してプログラムでハンドラを接続することができます。

関連する問題