2014-07-09 4 views
2

treeview 내에서 Gtk 셀 렌더러 토글을 사용합니다. 토글 버튼을 클릭하면 토글 버튼이있는 행이 선택됩니다. 이 문제를 방지하고 싶습니다. 토글 된 신호가 발동 될 때 FALSE를 반환하여 시도 했으므로 이벤트는 확인란의 부모 위젯 (행, treeView)을 통해 전파되지 않아야합니다 ... 그러나 작동하지 않았습니다. 내가 선택 기능을 유지하려면 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 "selectCheckbox"라고 불리는 boolean 플래그. 처음에는 FALSE로 설정했습니다. 토글 된 신호 콜백에서 나는 TRUE로 설정했다. 행 선택 콜백 (토글 신호 콜백이 아님)에서이 플래그의 값을 확인합니다. 플래그가 FALSE이면, true를 반환하여 행을 선택하게합니다. 플래그가 true이면 false를 반환하여 행을 선택하게하지 않고 플래그를 false로 설정합니다.

+0

이 솔루션을 게시 해 주셔서 감사합니다. FALSE를 반환하는 것이 왜 효과가 없다는 것을 알았습니까? –

+1

false를 반환해도 이벤트 전파는 중단되지 않지만 기본 이벤트의 동작 만 방지합니다. – dhalfageme

관련 문제