QTreeView中的列上隐藏的排序指示器

问题描述:

我有它的QTreeView和I setSortEnable = true,并且所有的列显示排序指示符,但现在我想要最后一列不显示排序指示符,只是最后一列。QTreeView中的列上隐藏的排序指示器

有任何想法或解决我的问题.. :(

请帮助 感谢

+0

'QHeaderView :: setSortIndicatorShown()'函数可能的帮助。 – vahancho 2014-11-06 09:18:24

+0

它隐藏了我的树状图上的所有指标,我只想要一个。 :(..请帮助 – 2014-11-06 09:20:15

QHeaderView总是拿上时,数据是由该列排序列排序指示器(如setSortIndicatorShowntrue) 。

就是为什么它看起来像禁止指标的图纸的唯一方式,是禁止用左键单击该列进行排序。

要禁止由某一列排序则需要:
1.创建从QHeaderView继承一个新的类(或使用事件过滤器)
2.重新实现mouseReleaseEventmousePressEvent
3.使用logicalIndexAt,以指示用户点击了列
4.呼叫setSectionsClickable(false)之前调用基本方法和setSectionsClickable(true)它之后。

例子:

void HeaderView::mouseReleaseEvent(QMouseEvent* e) 
{ 
    const int index = logicalIndexAt(e->pos()); 
    if (index == 3) setSectionsClickable(false); 
    QHeaderView::mouseReleaseEvent(e); 
    setSectionsClickable(true); 
} 

mousePressEvent相同。

因此,你将禁止某些列

+0

感谢您的帮助......这是工作 – 2014-11-06 16:00:01

的排序就我而言,我有三列,并隐藏第二列的排序指标是必要的。 因为我的有排序的自定义规则,刚QHeaderView::sectionClicked事件与OnHeaderClicked(int column)插槽,这样做:

switch (column) 
{ 
    case 0: 
     // Custom sorting operations 
     break; 
    case 1: 
     tree_widget_->sortByColumn(-1); 
     break; 
    case 2: 
     // Custom sorting operations 
     break; 
}