2012-08-31 44 views
0

我有一個功能,我想隱藏按下按鈕。我已經讀過,我可以在一個信號上定義多個回調函數,它們將按照定義的順序調用。所以我想在按鈕按下時執行兩個函數,我希望其中的一個隱藏包含此按鈕的窗口。我試圖這樣做:Gtk隱藏窗口的回調

g_signal_connect(btn_confirm, "clicked", G_CALLBACK(function_that_does_stuff), NULL); 
g_signal_connect(btn_confirm, "clicked", G_CALLBACK(kill_window), add_conn_win); 
... 
void kill_window (GtkWidget* wdgt, GtkWidget* win) 
{ 
    gtk_widget_hide_all(win); 
} 

但這是行不通的。窗戶仍在那裏。有人能告訴我該怎麼做嗎?第一

+0

你如何顯示窗口?你有沒有檢查你的回調是否被觸發?從代碼片段中,它聽起來像窗口被用作對話框。如果是這樣,你有沒有嘗試過使用GtkDialog?最後,你可能不想使用_hide_all,因爲這會將窗口中的所有小部件標記爲隱藏,這可能不是你想要做的 – iain

回答

1

第一件事,看文檔說怎麼樣gtk_widget_hide_all()

gtk_widget_hide_all已經從2.24版本棄用,不應該在新編寫的代碼中使用

相反,你應該使用gtk_widget_hide() 。規範說它

反轉gtk_widget_show()的效果,導致窗口小部件被隱藏(對用戶不可見)。

作爲評論說,確保您的回調被觸發。然後嘗試

gtk_widget_hide (win);

我認爲應該做的工作,讓我知道,如果有幫助!

+1

它的工作,實際上我認爲它一直都可以,但回調沒有被觸發,原因不明。感謝您的幫助。 – psotnick