GtkTreeView 列标题点击事件

Posted

技术标签:

【中文标题】GtkTreeView 列标题点击事件【英文标题】:GtkTreeView Column Header Click Event 【发布时间】:2012-12-04 16:13:26 【问题描述】:

我有一个问题。我有一个GtkListStore 和一个GtkTreeView,当用户单击GtkTreeView 的某个列时,我想对GtkListStore 进行排序并将结果更新到GtkTreeView。我假设列是可点击的,并且不能重新排序,所以列的数字顺序可以用来设置排序列的索引。但是当用户单击特定列的标题时,我似乎找不到发出哪个信号。我一遍又一遍地浏览了 GTKMM 文档,但似乎没有提及!

【问题讨论】:

【参考方案1】:

使用Gtk::TreeView::get_column(<column-no>) 获取特定列并使用Gtk::TreeViewColumn::signal_clicked() 附加到其“点击”信号:

Gtk::TreeViewColumn* col = myview.get_column(SOME_COLUMN_NUMBER);
col->signal_clicked().connect(sigc::mem_fun(*this,&some_method));

【讨论】:

没错! :D 非常感谢!【参考方案2】:

这不是你应该做的。

可以有多个视图连接到同一个模型;排序不是您对模型执行的操作,而是您对视图执行的操作。

查看@987654321@ 接口(及其@987654322@ 实现)。

【讨论】:

但在这种情况下,我确实想对模型进行排序,因为只有一个视图,而视图存在的唯一原因是向用户展示排序后的模型是什么样的。我总是可以像这样手动对模型进行排序:GtkListStoreName.set_sort_column_id(some_integer); 但我就是不明白哪个事件应该触发这个。我对排序没有问题。我只是找不到如何检测点击了哪个列标题。

以上是关于GtkTreeView 列标题点击事件的主要内容,如果未能解决你的问题,请参考以下文章

带有可点击行事件的引导表以及如何排除列或单元格

layui怎样给表格的最后一列添加一个编辑按钮并且点击后可以触发对应的事件

DataGridView的按钮列的点击事件

通过 onclick 原生方法 VueJs 监听事件点击

grid 表头标题栏添加点击事件

如何根据父组件的点击事件打开添加模式-vuejs