作者chigi ( )
看板C_and_CPP
標題[問題] gtk2.0 xml & callback 的關聯
時間Fri Oct 24 17:49:02 2014
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
gtk2.0
問題(Question):
我打算用gtk畫一個drawarea出來,在它做完了時候,執行一段code
所以想使用realize的event來觸發callback function。
所以,我在xml的內容寫了這段
<object class="drawarea" id="Draw">
<signal name="realize" handler="realize_cb" />
</object>
而main中,宣告:
gboolean realize_cb(GtkWidget *widget, GdkEvent *ev
gpointer data){
// do something
fprintf(stderr, "check");
}
這段callback function。
另外在main program裡,用
GtkWidget *Drawarea =
GTK_WIDGET(gtk_builder_get_object(builder, "Draw"));
取得這個Widget的設定,
然後
gtk_widget_realize(Drawarea);
實作它。
compile的階段沒有問題,但是卻沒有進到callback裡;
不過如果是用
gtk_signal_connect(G_OBJECT(Drawarea), G_CALLBACK(realize_cb));
來連結就可以成功,
請問我還缺了什麼設定才能把這個連接起來?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.21.58
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414144144.A.9E3.html
推 Bencrie: linker 上 --export-dynamic 看有沒有用 10/24 19:38
推 Bencrie: 另外你有 call gtk_builder_connect_signals 嗎? 10/24 19:42
→ chigi: 我都試試看,看起來很像這兩個原因~等等還回報。 10/27 09:36
→ chigi: 試了,有改善,至少有連到,但是它現在在執行的時候找不到 10/27 11:39
→ chigi: handler, 還在想辦法解決中.. 10/27 11:40
按照一樓大大的解法弄好了!
重點在幾個:
1. gtk_build_connect_singals()
2. linker 要加上export_dynamic
3. 用 extern "C" G_MODULE_EXPORT
結案。
※ 編輯: chigi (220.135.21.58), 10/27/2014 14:50:12
※ 編輯: chigi (220.135.21.58), 10/27/2014 14:55:18
推 Bencrie: 有 C++ 怎麼還用 gtk XDD 10/27 17:05
→ chigi: 痾,工作需求..@@ 10/30 12:08