0

コードの短いスニペットを含めました。5列のツリービューを作成しています。GtkListStore に格納されるデータを生成する for ループを使用して、最後の列を貼り付けました。ツリー ビューの列を簡単に中央に配置できます。GtkListStore でテキストを中央に配置する方法をオンラインで調べましたが、解決策が見つかりません。私はドキュメントに目を通しました:

http://developer.gnome.org/gtk3/3.4/GtkListStore.html

最後のリンクでは、配置プロパティが表示されません。GtkTreeModel を介してすべてのオブジェクトを整列させる方法はありますか? GtkListStore を使用してテキストを揃えるオンラインの例は見つかりませんでした...本当に助けていただきありがとうございます!

// Append Table Velocity column
column = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(column, "Pressure");
gtk_tree_view_column_set_min_width(column, 60);
gtk_tree_view_column_set_alignment(column, 0.5); // 0.0 left, 0.5 center, 1.0 right
// Code Above center's the column title in the Tree View

renderer = gtk_cell_renderer_text_new();
g_object_set( G_OBJECT( renderer ), "xalign", 0.5 );    // xalign, 0.5
// Code above doesn't change alignment..

gtk_tree_view_column_pack_start(column, renderer, FALSE);
gtk_tree_view_column_set_attributes(column, renderer, "text", 4, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);

// List Store
liststore = gtk_list_store_new(5, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(liststore));

int i;
for(i=1; i<=6; i++) {
// Append test data
gtk_list_store_append(liststore, &iter);
gtk_list_store_set(liststore, &iter, 0, i, 1, "5", 2, "0.2", 3, "123", 4, "0.5", -1);
// How do I center the text stored in the GtkListStore?
}

gtk_widget_show_all(window);
4

2 に答える 2

2

gtk_tree_view_column_with_attributes() という便利な関数を見つけることができました。この関数とさらに 2 行のコードを使用すると、テキストをヘッダーとリスト ストアの中央に配置できます。

// Append Pressure column
column = gtk_tree_view_column_new_with_attributes("Pressure", renderer, "text", 4, NULL);
gtk_tree_view_column_set_alignment(column, 0.5);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
于 2013-02-18T19:58:01.440 に答える
1

最後にNULLを試してくださいg_object_set (renderer, "xalign", 0.5, NULL);。g_object_setには番兵が必要です。実際に番兵を除外すると、少なくともコンパイラの警告が表示されるはずでしたか、それとも意図的または誤って除外しましたか?

于 2013-02-06T20:52:00.560 に答える