2012-03-15 8 views
0

私はハンドラ関数があります。ラベルuriでGTK activate_linkが動作しませんか? gtkmm Gtk :: Labelとsignal_activate_link()?

bool test(const Glib::ustring& uri) 
{ 
    MessageBoxA(NULL, "hello", NULL, 0); 
    return true; 
} 

を、私はそれが動作しない理由を私は理解していない

label2.set_markup("<a href=\"http://www.google.com\">Google</a>"); 
sigc::connection conn = label2.signal_activate_link().connect(sigc::ptr_fun(test)); 

を接続します。 Googleをクリックすると、私のものではなくデフォルトのURIハンドラが使用されていることがわかります。

+0

誰もがこのことについてどんな考えを持っていますか?それは私を少しナッツ運転している – loop

答えて

1

デフォルトよりも前に自分の関数が呼び出されていることを確認しなければなりませんでした。私は、デフォルトのシグナルハンドラがtrueを返し、シグナルが伝播しないということが起こっていると推測していますか?ここで

/** Connects a signal to a signal handler. 
    * For instance, connect(sigc::mem_fun(*this, &TheClass::on_something)); 
    * 
    * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun(). 
    * @param after Whether this signal handler should be called before or after the default signal handler. 
    */ 
    sigc::connection connect(const SlotType& slot, bool after = true) 
    { return sigc::connection(connect_(slot, after)); } 

は正しいコードです:

label2.signal_activate_link().connect(sigc::ptr_fun(test), false); 
関連する問題