LINUX.ORG.RU

[GTK+] Добавление картинки и текста в gtk_cell_renderer_pixbuf и gtk_cell_renderer_text, находящихся в одной колонке gtk_tree_view_column


0

1

Мне необходимо сделать так, чтобы можно было добавлять, используя gtk_tree_store_append и gtk_tree_store_set поля в GtkTreeStore, но чтобы поле представляло из себя gtk_cell_renderer_pixbuf и gtk_cell_renderer_text. Т.е. была одна колонка, в которой два gtk_cell_renderer один pixbuf другой text. Возможно ли это? В данный момент у меня две колонки в gtk_tree_view, одна для pixbuf другая для text

col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(col, "First Name");
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer, "text", COL_FIRST_NAME);

аналогично создаётся для pixbuf

добавление нормально работает

......
gtk_tree_store_append(treestore, &child, &toplevel);
gtk_tree_store_set(treestore, &child,
                     COL_FIRST_NAME, "Janinita",
                     COL_PIXBUF, pixbuf,                     
                     -1);
......
Это всё нужно чтобы отображать строку (текст + рисунок) как единое целое. А сейчас отображаются две колонки и не очень удачно смотрится. Есть ли какие-то варианты решения? gtk_tree_store_set обращается при добавление ведь к колонкам


Вариант номер 1: Используйте IconView а не две колонки. Вариант номер 2: Создайте колонку-контейнер, добавьте солонки иконки и текста в нее, и делайте append уже колонке-контейнеру.

anonymous
()

Я бы на вашем имплементировал свой рендерер, посмотрев на код GtkCellRendererText и GtkCellRendererPixbuf.

grassmeister
()
col = gtk_tree_view_column_new ();

r = gtk_cell_renderer_pixbuf_new ();
gtk_tree_view_column_pack_start (col, r, FALSE);
gtk_tree_view_column_set_attributes (col, r, "pixbuf", 0, NULL);

r = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (col, r, FALSE);
gtk_tree_view_column_set_attributes (col, r, "text", 1, NULL);

gtk_tree_view_append_column (GTK_TREE_VIEW (w), col);

ananas ★★★★★
()
Ответ на: комментарий от ananas

так я делал, но при реализации добавления

gtk_tree_store_append(treestore, &child, &toplevel);
gtk_tree_store_set(treestore, &child,
                     COL_FIRST_NAME, "Janinita",
                     COL_PIXBUF, pixbuf,                     
                     -1);
обращение COL_PIXBUF, pixbuf, идёт ко второй колонке... по-моему... вечером проверю, но вчера так не работало

g-71
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.