2014-07-09 78 views
2

我使用Gtk Cell Renderer在樹視圖內切換。當我點擊切換按鈕時,切換按鈕所在的行被選中。我想防止這種行爲。當觸發信號被觸發時,我通過返回FALSE來嘗試它,所以事件不應該通過複選框的父窗口小部件(行,樹視圖)來支持......但它不起作用。防止單擊toggleButton時選擇GtkTreeRow

我想繼續選擇功能啓用,因此禁用這一功能是不是一個解決方案

這是我如何做的:

renderer = gtk_cell_renderer_toggle_new();; 
g_signal_connect (G_OBJECT(renderer), "toggled", (GCallback)(update_result_list_model), NULL); 

這裏是回調,它不會停止事件傳播:

extern "C" gboolean update_result_list_model(GtkCellRendererToggle *cell, 
    gchar *path_str, 
    gpointer data) 
{ 
    // Do some job.... 

    return false; 

} 

感謝

回答

1

最後,我通過全光照得到了它g一個布爾標誌,我稱之爲「chooseCheckbox」。最初我將它設置爲FALSE。在切換的信號回調中,我將其設置爲TRUE。在行選擇回調(而不是切換信號回調),我檢查這個標誌的值。如果標誌是FALSE,我讓行通過返回true來選擇。如果該標誌爲真,我不會讓該行通過返回false而被選中,並且我將該標誌設置爲false

+0

感謝您發佈此解決方案。你有沒有發現爲什麼返回FALSE不起作用? –

+1

我認爲返回false不會停止事件傳播,但它只會阻止默認事件的行爲。 – dhalfageme