如何删除 GtkTreeView 排序箭头?

Posted

技术标签:

【中文标题】如何删除 GtkTreeView 排序箭头?【英文标题】:How to remove the GtkTreeView sorting arrow? 【发布时间】:2009-05-27 08:21:44 【问题描述】:

我需要从列标题中删除排序箭头。这可以通过在列上调用@987654321@ 来完成。

箭头没有显示,但它的空间似乎仍然被保留。如果列的标题大到足以填满所有标题,则最后一部分将被剪裁(箭头应位于的位置)。

有没有办法让标题填满整个标题?

【问题讨论】:

【参考方案1】:

这在 GTK+ 中似乎有点奇怪。我downloaded并通读了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 是持有箭头的小部件。这似乎表明箭头小部件总是包装在构成列标题的水平框中,然后如果它不应该是可见的,则只是隐藏(不删除)。这意味着它仍然存在于框中,占用空间并导致标签被剪裁。

我建议通过GTK+ bugtracker 搜索有关此的问题,如果没有找到,请创建一个。

【讨论】:

感谢您的回复。我在 GTK 代码中查看自己并注意到了这一点,但我认为如果小部件被打包然后隐藏,它不会占用空间。我最近在 QT 中做了一些工作,当你隐藏一个小部件时,空间不再使用。 嗯...是的,这听起来很奇怪。现在我有点怀疑自己的答案,因为不可见的东西占用空间似乎很奇怪。虽然我现在不会回去阅读更多代码,但我仍然推荐错误跟踪路线。【参考方案2】:

好的,我已经向 gtk 提交了错误报告。他们说这不是问题,也不会解决。

我查看了其他图形工具包(windows、qt),它们的实现有所不同,但这对 gtk 团队的人来说似乎并不重要。

【讨论】:

【参考方案3】:

好的,您可以对列使用set_clickable 方法您不希望它有箭头 然后使用signal_connectclicked 信号并将其绑定到一个函数,该函数将使用get_sort_column_id 获取当前排序顺序,然后应用反向排序顺序 set_sort_column_id.

【讨论】:

以上是关于如何删除 GtkTreeView 排序箭头?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除Word中的软回车(向下的小箭头)

GtkTreeView 列标题点击事件

如何获取 gtktreeview 标头的高度?

如何在 GtkTreeView 中交替亮/暗行?

怎么恢复误删的文件?

processon里的箭头删不掉