2017-03-27 4 views
1

GtkListStoreのテキストが付いたボタンが必要です。画像をボタンとして使って別の答えを読むのですが、実際にはタイトルがテキストである必要があります。これどうやってするの?私はGdkPixbufにテキストをレンダリングする解決策でうまくいくでしょう。GtkListStoreにGtkButtonをGTK +のテキストで追加する

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ではなく、ヘッダーではなく列の内容の1つになります。ボタンを含むテーブルを持つことに匹敵します。 –

+0

この質問は定期的に出てくる。 GtkにはCellRendererButtonがありません(理由はこちら)(https://ubuntuforums.org/archive/index.php/t-1009065.html)。基本的には、ツリービューの外側にボタンを配置する必要があります。ユーザーが10個のアイテムをキャンセルしたいとします。彼はキャンセルボタンを10回クリックしたくない。彼は10の項目を選択し、キャンセルをクリックしたいと思う。 – theGtknerd

答えて

0

2つのオプションがあります(実際には2つ以上のオプションがありますが、先に進む前に2つのオプションを試す必要があります)。

ツリービューの「row_activated」信号にフックアップします。シングルまたはダブルクリックすると設定できます。これは、選択した行へのパスを渡します。

ツリービュー "get_selected_row"を取得するツリービューの下/外にボタンを配置します。これを使用して、新しいウィンドウで開く行の内容を取得できます。 Example。ヒント:これは、Gtkがツリービューのボタンの使用を推奨する方法です。

関連する問題