LINUX.ORG.RU

GtkTreeView: несколько вопросов


0

0

1. Нужно добавить пару столбцов в TreeView с помощью gtk_tree_view_insert_column_with_data_func(). Во всех случаях cell-renderer == GtkCellRendererText. Насколько правильно/неправильно перед каждый вызовом фунции создавать новый экземпляр renderer'а с помощью gtk_cell_renderer_text_new() ? Работает прекрасно как с одним экземпляром, так и с экземплярами для каждого столбца

2. Есть два, теоретически, эквивалентных по функционалу куска кода (добавление нового столбца с альтернативным set-func):

===> Первый:

cell_renderer = gtk_cell_renderer_text_new();

gtk_tree_view_insert_column_with_data_func(GTK_TREE_VIEW(app_data->list), -1, "Id", cell_renderer, (GtkTreeCellDataFunc)cell_id_set_func, NULL, NULL);

===> Второй:

column = gtk_tree_view_column_new();

gtk_tree_view_column_set_title(column, "Id");

gtk_tree_view_column_set_cell_data_func(column, cell_renderer, (GtkTreeCellDataFunc)cell_id_set_func, NULL, NULL);

gtk_tree_view_append_column(GTK_TREE_VIEW(app_data->list), GTK_TREE_VIEW_COLUMN(column));

Во втором случае получаю runtime-warning и в столбцах пусто: Gtk-CRITICAL **: gtk_tree_view_column_cell_layout_set_cell_data_func: assertion `info != NULL' failed

В чем здесь ошибка?

3. Как сделать, что бы пользователь мог менять ширину столбцов? Обыскался в документации: там, вроде как, говорится только про автоматическую установку ширины.

Спасибо.

anonymous

На первый вопрос, листая самплы, кажется, нашел ответ. Новый экземпляр нужен когда на ячейки одного столбца нужно назначить обработчик сигналов. Например, cell-edited.

anonymous
()

2. открой исходники этой функции в gtk+ и посмотри, что такое это info

3. gtk_tree_view_column_set_resizable (tree_column, TRUE);

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