QTreeview表头垂直显示

菠萝猫咪 2017-09-23 06:31:17
如何将QTreeview的表头垂直显示?
表头每列的文字都比较多,如果不垂直显示,在页面中就显示不开了,现在想是将表头文字垂直显示(一般表头文字都是从左到右水平显示,现在想从上到下垂直显示),但不知道方法,求大神指点
...全文
1498 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
菠萝猫咪 2017-09-25
  • 打赏
  • 举报
回复
引用 5 楼 year2002 的回复:
[quote=引用 4 楼 feileile01 的回复:] [quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行[/quote] 大神,能帮我直接把这个paintSection函数写一下吗,drawText里面的其他参数我不会设置
  • 打赏
  • 举报
回复
引用 4 楼 feileile01 的回复:
[quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行
菠萝猫咪 2017-09-25
  • 打赏
  • 举报
回复
引用 3 楼 year2002 的回复:
[quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢
  • 打赏
  • 举报
回复
引用 2 楼 feileile01 的回复:
[quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去
菠萝猫咪 2017-09-25
  • 打赏
  • 举报
回复
引用 1 楼 year2002 的回复:
QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示
菠萝猫咪 2017-09-25
  • 打赏
  • 举报
回复
引用 9 楼 year2002 的回复:
[quote=引用 8 楼 feileile01 的回复:] [quote=引用 7 楼 year2002 的回复:] [quote=引用 6 楼 feileile01 的回复:] [quote=引用 5 楼 year2002 的回复:] [quote=引用 4 楼 feileile01 的回复:] [quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行[/quote] 大神,能帮我直接把这个paintSection函数写一下吗,drawText里面的其他参数我不会设置[/quote] 没有什么参数要设的了logicalIndex是列索引 根据列索引取下表头的名字,比如放到QString str;里 然后直接写painter->drawText(rect, Qt::TextWrapAnywhere, str);就行了 不需要再做任何事情了[/quote] 嗯嗯,实现了: QString strText = this->model()->headerData(logicalIndex, m_orientation, Qt::DisplayRole).toString(); painter->drawText(rect,Qt::TextWordWrap, strText); 但这样显示的列和列之间没有分割线了,有什么方式能显示出来吗[/quote] 这个真不会了 分割线应该还在,就是没显示 线的显示应该是在QHeaderView的paintSection函数里面画的,你重新实现了这个函数自然线也就没了 实在不行你自己用drawLine或者drawRect自己画个呗 [/quote] 恩,我试着用drawLine画了一下,感觉跟自身分割线不一样,就先不弄了,能换行显示已经很好了,非常感谢
  • 打赏
  • 举报
回复
引用 8 楼 feileile01 的回复:
[quote=引用 7 楼 year2002 的回复:] [quote=引用 6 楼 feileile01 的回复:] [quote=引用 5 楼 year2002 的回复:] [quote=引用 4 楼 feileile01 的回复:] [quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行[/quote] 大神,能帮我直接把这个paintSection函数写一下吗,drawText里面的其他参数我不会设置[/quote] 没有什么参数要设的了logicalIndex是列索引 根据列索引取下表头的名字,比如放到QString str;里 然后直接写painter->drawText(rect, Qt::TextWrapAnywhere, str);就行了 不需要再做任何事情了[/quote] 嗯嗯,实现了: QString strText = this->model()->headerData(logicalIndex, m_orientation, Qt::DisplayRole).toString(); painter->drawText(rect,Qt::TextWordWrap, strText); 但这样显示的列和列之间没有分割线了,有什么方式能显示出来吗[/quote] 这个真不会了 分割线应该还在,就是没显示 线的显示应该是在QHeaderView的paintSection函数里面画的,你重新实现了这个函数自然线也就没了 实在不行你自己用drawLine或者drawRect自己画个呗
菠萝猫咪 2017-09-25
  • 打赏
  • 举报
回复
引用 7 楼 year2002 的回复:
[quote=引用 6 楼 feileile01 的回复:] [quote=引用 5 楼 year2002 的回复:] [quote=引用 4 楼 feileile01 的回复:] [quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行[/quote] 大神,能帮我直接把这个paintSection函数写一下吗,drawText里面的其他参数我不会设置[/quote] 没有什么参数要设的了logicalIndex是列索引 根据列索引取下表头的名字,比如放到QString str;里 然后直接写painter->drawText(rect, Qt::TextWrapAnywhere, str);就行了 不需要再做任何事情了[/quote] 嗯嗯,实现了: QString strText = this->model()->headerData(logicalIndex, m_orientation, Qt::DisplayRole).toString(); painter->drawText(rect,Qt::TextWordWrap, strText); 但这样显示的列和列之间没有分割线了,有什么方式能显示出来吗
  • 打赏
  • 举报
回复
引用 6 楼 feileile01 的回复:
[quote=引用 5 楼 year2002 的回复:] [quote=引用 4 楼 feileile01 的回复:] [quote=引用 3 楼 year2002 的回复:] [quote=引用 2 楼 feileile01 的回复:] [quote=引用 1 楼 year2002 的回复:] QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要
能具体帮我设计一下这个paintSection吗?我还是不知道要怎么实现垂直显示[/quote] paintSection的参数里面有painter,调用painter的rotate()函数旋转90度或者270度,然后再drawText把表头的文字写上去[/quote] 假设表头一列名称为123456,但因为宽度不够,所以只显示了123,我是想让表头文字全部显示,也就是宽度不够是能自动换行,这要怎么实现呢[/quote] drawText有flags参数,用Qt::TextWordWrap或者Qt::TextWrapAnywhere能根据rect的宽度换行[/quote] 大神,能帮我直接把这个paintSection函数写一下吗,drawText里面的其他参数我不会设置[/quote] 没有什么参数要设的了logicalIndex是列索引 根据列索引取下表头的名字,比如放到QString str;里 然后直接写painter->drawText(rect, Qt::TextWrapAnywhere, str);就行了 不需要再做任何事情了
  • 打赏
  • 举报
回复
QTreeView有setHeader(QHeaderView *header)函数 再继承一个QHeaderView,在虚函数paintSection里实现你自己的需要

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧