C++ 如何删除GtkTreeView排序箭头?

C++ 如何删除GtkTreeView排序箭头?,c++,gtk,gtkmm,C++,Gtk,Gtkmm,我需要从列标题中删除排序箭头。这可以通过在列上调用来完成 箭头未显示,但其空间似乎仍保留。如果列的标题足够大,足以填充所有标题,则最后一部分将被剪裁(箭头应位于的位置) 有没有办法让标题填满整个标题?这在GTK+中似乎有点奇怪。我仔细阅读了GtkTreeViewColumn代码的相关部分,它似乎使用了以下逻辑: if (tree_column->show_sort_indicator || (GTK_IS_TREE_SORTABLE (model) &&

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

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


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

这在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
是包含箭头的小部件。这似乎表明arrow小部件总是打包到构成列标题的水平框中,如果不应该是可见的,则隐藏(而不是删除)。这意味着它仍然在盒子里,占据了空间,导致标签被剪掉


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

好的,因此我已向gtk提交了一份错误报告。他们说这不是一个问题,也不会被解决


我看过其他的图形工具包(windows、qt),它们的实现方式不同,但这对gtk团队的成员来说似乎并不重要。

好的,您可以使用
将可点击的
方法设置到列中,您不希望它有箭头

然后使用
signal\u connect
连接单击的
信号,并将其绑定到函数,该函数将使用
get\u sort\u column\u id
获取当前排序顺序,然后使用
set\u sort\u column\u id

应用反向排序顺序,谢谢您的回复。我在查看GTK代码时注意到了这一点,但我认为如果小部件打包后隐藏,它将不会占用空间。我最近在QT上做了一些工作,当你隐藏一个小部件时,空间就不再被使用了。嗯。。。是的,听起来很奇怪。现在我有点怀疑我自己的答案,因为看不见的东西会占据空间,这似乎很奇怪。不过,我现在不会回头阅读更多的代码,我仍然建议使用bug跟踪程序。