Как убрать стрелку сортировки GtkTreeView?

Мне нужно удалить стрелку сортировки из заголовка столбца. Это можно сделать, вызвав set_sort_indicator(false) для столбца.

Стрелка не отображается, но место для нее все еще зарезервировано. Если заголовок столбца достаточно большой, чтобы заполнить весь заголовок, последняя часть обрезается (там, где должна быть стрелка).

Есть ли способ, чтобы заголовок заполнил весь заголовок?


person Community    schedule 27.05.2009    source источник


Ответы (3)


Это кажется немного странным в GTK+. Я загрузил и прочитал соответствующие части кода GtkTreeViewColumn, и кажется, использует эту логику:

  if (tree_column->show_sort_indicator ||
       (GTK_IS_TREE_SORTABLE (model) && tree_column->sort_column_id >= 0))
    gtk_widget_show (arrow);
  else
    gtk_widget_hide (arrow);

Где arrow — виджет со стрелкой. Кажется, это указывает на то, что виджет со стрелкой всегда упакован в горизонтальное поле, которое составляет заголовок столбца, а затем просто скрыт (не удален), если он не должен быть видимым. Это будет означать, что он все еще находится в коробке, занимает место и приводит к обрезанию этикетки.

Я бы порекомендовал поискать проблему с этой , и если ничего не найдено, создайте его.

person unwind    schedule 28.05.2009
comment
Спасибо за ответ. Я смотрел сам в коде GTK и заметил это, но я подумал, что если виджет запаковать, а затем скрыть, он не будет занимать место. Недавно я проделал некоторую работу в QT, и там, когда вы скрываете виджет, пространство больше не используется. - person ; 28.05.2009
comment
Хм... Да, это звучит странно. Теперь я немного сомневаюсь в своем собственном ответе, поскольку кажется странным, что что-то невидимое должно занимать место. Я не буду возвращаться и читать больше кода прямо сейчас, и я все еще рекомендую маршрут отслеживания ошибок. - person unwind; 28.05.2009

Итак, я отправил отчет об ошибке в gtk. Сказали, что это не проблема и не исправят.

Я просмотрел другие графические инструменты (windows, qt), и их реализация отличается, но, похоже, это не имеет значения для ребят из команды gtk.

person Community    schedule 04.06.2009

Хорошо, вы можете использовать метод set_clickable для столбца, вы не хотите, чтобы у него была стрелка, затем используйте signal_connect для сигнала clicked и привяжите его к функции, которая будет использовать get_sort_column_id, чтобы получить текущий порядок сортировки, затем примените обратный порядок сортировки, используя set_sort_column_id.

person ophidion    schedule 28.01.2013