QTabWidget的tabbar居左时Text水平显示问题

(开发音视频软件thinkvd的日志)
这个问题我在qtcn bbs中发过http://www.qtcn.org/bbs/read.php?tid=32563,现在把原因及解决思路记录下来。
(补允:没有再用HorusStyle, 这里也有源代码:http://www.qtforum.org/article/28672/how-to-change-qtabwidget-s-tab-positon.html,不过与他的实现方式不同)


当设置tabbar居左时, 直接用QTabWidget存在的几个问题:
1。文字不是水平显示
2。TabBar的内容显示与StackWidget显示冲突
3。调整单个TabBar的高度
4。单个TabBar的press event响应
5. 文字图片位置显示关系

分析原因:
1。QTabWidget::setUpLayout控制Table与stackwidget的关系, 但setUpLayout是private, 解决方法,就是把它重新实现,跟踪代码,发现在QTabWidget::initStyleOption中调整。
2。文字竖直显示要改成水平显示,需要重新实现tabbar::paintevent, 继承QTabtab, 仿效paintevent简单写一个,问题5与它类似
3。问题3,由于它的信息都存在QTabBarPrivate中,把Rect的top, height按显示顺序调整即可。
  问题4与它类似,重新实现mousePressEvent即可. 
  
  这里暂时做了一个demo,还有一些问题待解决,不过主要问题已经解决了。




带网格部分表示currentIndex.

改进一点:

你可能感兴趣的:(C++,bbs,网格,table)