2017-03-27 20 views
1

GtkListStore에 대한 텍스트가있는 단추가 필요합니다. 이미지를 단추로 사용하여 또 다른 대답을 읽었지만 실제로 텍스트 여야한다는 제목이 필요합니다. 어떻게해야합니까? 텍스트를 GdkPixbuf에 렌더링하는 솔루션을 사용해도 문제가 없습니다.GTK + 텍스트에 GtkListStore에 GtkButton 추가하기

GType *types; 

types = g_new0 (GType, num_fields); 

for(int i=0; i<num_fields; i++) { 
    types[i] = GTK_TYPE_BUTTON; 
} 

tree_store = gtk_list_store_newv(num_fields, types); 
tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(tree_store)); 

GtkTreeViewColumn *column; 
    GtkCellRenderer *renderer; 
    GdkPixbuf  *icon; 
    renderer = gtk_cell_renderer_pixbuf_new(); 
    column = gtk_tree_view_column_new_with_attributes (name.c_str(),renderer,"pixbuf",i,NULL); 

button = gtk_button_new_with_label ("Quit"); 
     g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); 
     gtk_widget_set_can_default (button, TRUE); 
     gtk_list_store_set(tree_store, &iter, j, button, -1); 

에 오류가 없습니다, 그러나 아무것도까지 보여줍니다 :

나는 이것을 시도했습니다.

새 창에서 선택 사항을보고 싶습니다.

+0

TreeViewColumn 헤더 나 그 외의 것에 버튼을 추가하려고합니까? 귀하의 질문은 이해하기 어렵습니다. – theGtknerd

+0

@theGtknerd가 아니라 머리글 내용이 아니라 열 내용 중 하나입니다. 버튼을 포함하는 테이블을 갖는 것에 비유 할 수 있습니다. –

+0

이 질문은 정기적으로 제기됩니다. Gtk에는 이유 [여기] (https://ubuntuforums.org/archive/index.php/t-1009065.html)에 대한 CellRendererButton이 없습니다. 기본적으로, 당신은 treeview 외부에 버튼을 넣어야한다. 사용자가 10 개의 항목을 취소하려고한다고 가정합니다. 그는 취소 버튼을 10 번 클릭하고 싶지 않습니다. 그는 10 개의 항목을 선택하고 취소를 클릭하려고합니다. – theGtknerd

답변

0

두 가지 옵션이 있습니다 (실제로 두 가지 옵션이 있지만 계속하기 전에 먼저 두 가지 옵션을 시도해야합니다).

단일보기 또는 두 번 클릭으로 설정할 수있는 treeview "row_activated"신호에 연결하십시오. 그러면 선택한 행의 경로로 전달됩니다.

트리 뷰 "get_selected_row"를 얻는 트리 뷰 아래/외부에 버튼을 배치하십시오. 그런 다음이 창을 사용하여 열려고하는 행의 내용을 새 창에서 가져올 수 있습니다. Example. 힌트 : Gtk는 트리 뷰가있는 버튼 사용을 권장합니다.