QTreeView中列上隐藏的排序指示器
我有QTreeView和IQTreeView中列上隐藏的排序指示器,qt,Qt,我有QTreeView和IsetSortEnable=true,所有列都显示排序指示符,但现在我希望最后一列不显示排序指示符,只显示最后一列 您对我的问题有什么想法或解决方案吗( 请帮忙 感谢QHeaderView当数据按此列排序时,总是在列上绘制排序指示符(如果设置排序指示符或显示为真) 这就是为什么看起来禁止绘制指示器的唯一方法是禁止通过左键单击对列进行排序 要禁止按特定列排序,您需要: 1.创建从QHeaderView继承的新类(或使用事件筛选器) 2.重新实现mouseReleaseEv
setSortEnable=true
,所有列都显示排序指示符,但现在我希望最后一列不显示排序指示符,只显示最后一列
您对我的问题有什么想法或解决方案吗(
请帮忙
感谢
QHeaderView
当数据按此列排序时,总是在列上绘制排序指示符(如果设置排序指示符或显示为真
)
这就是为什么看起来禁止绘制指示器的唯一方法是禁止通过左键单击对列进行排序
要禁止按特定列排序,您需要:
1.创建从QHeaderView
继承的新类(或使用事件筛选器)
2.重新实现mouseReleaseEvent
和MousePresseEvent
3.使用LogicalIndex
指示用户单击了列
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
执行相同的操作
因此,您将禁止对某一列进行排序在我的例子中,我有三列,有必要隐藏第二列的排序指示符。
因为我有自定义的排序规则,所以我刚刚用OnHeaderClicked(int列)
slot获得了QHeaderView::sectionClicked
事件,并执行了以下操作:
switch (column)
{
case 0:
// Custom sorting operations
break;
case 1:
tree_widget_->sortByColumn(-1);
break;
case 2:
// Custom sorting operations
break;
}
QHeaderView::setSortIndicatorShown()
函数可能会有帮助。它隐藏了我树视图上的所有指示器,我只想要一个。:(…请帮助