逆枫゛

Qt学习群:1149411109 群文件提供博客源码,定期答疑、更新学习资料。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1,简介

上一篇文章介绍了QTreeView常用的设置API,一般情况足够使用了。

以后逐步介绍更多的其他设置方法,本篇对表头、行、列相关内容做一个综合。

 

2,表头、列

QTreeView* t;

隐藏表头:

t->header()->hide();

设置默认列宽:

t->header()->setDefaultSectionSize(100);

设置表头默认文字对齐:

t->header()->setDefaultAlignment(Qt::AlignCenter);

一般设置最后一列自适应宽度,让表头初始显示时占满行,效果比较好:

t->header()->setStretchLastSection(true);

点击QTreeView时,如果出现该列头文字加粗的情况,可以用下面接口去掉该属性:

t->header()->setHighlightSections(true);

当然,项目里的做法一般更细节,可能是对每列分别设置列宽、拉伸属性:

t->header()->resizeSection(0,100);                            //第1列宽100
t->header()->setSectionResizeMode(3,QHeaderView::Fixed);      //第4列定宽

也可以直接使用QTreeView的接口设置列宽:

void setColumnWidth(int column, int width);

设置QTreeView内容按某列排序:

t->header()->setSortIndicator(0,Qt::AscendingOrder);    //按第1列升序排序

对这些需指定某列进行设置的接口,需要QTreeView绑定model之后调用才行。因为要对数据内容进行调整。

 

3,行

设置行高:

QTreeView没有直接提供设置行高的方法,一般的方法是使用Delegate。

QItemDelegate继承,使用QTreeView::setItemDelegate设置。派生类里对sizeHint处理:

QSize MyDelegate::sizeHint ( const QStyleOptionViewItem & option,  const QModelIndex & index ) const  
{  
    QSize size = QItemDelegate::sizeHint(option, index);  
    size.setHeight( size.height() + 4 );  
    return size;  
}  

我觉得最简单的方法就是直接用qss样式表:

QTreeView::item {
	height: 30px;
}
稍后详细介绍QTreeView的样式表使用。







posted on 2018-04-08 00:32  逆枫゛  阅读(2524)  评论(0编辑  收藏  举报