QTabWidget中设置QTabBar横向
最近有同学经常私信给我,说自己很烦恼,一个Qt的控件都搞定不了,我细问下原因,发现原来是一个大家经常用的Qt的空间QTabWidget的自定义导致的,嘿嘿。
为了给这位同学答疑解惑,我特意写了一下这篇文章,希望可以帮助有此类需求的同学。
第一,Qt中的QTabWidget默认的设置中,即便你设置了:
setTabPosition(QTabWidget::West),你会发现执行后QTabBar依然是竖向的,并不是你想要的横向,如下图所示:
有些同学搞定不了这个就开始苦恼了。
其实完全不必这样,对于这个你搞定不了,其实你说明你对Qt的自定义样式代理掌握的不到位,或者说你根本不会用自定义代理样式而已。之前不会不要紧,今天我就带着大家一起学习下这块。
第二,Qt的自定义Style代理
说到这个,需要大家对Qt的QProxyStyle这个类有所了解,具体详情请大家自行参考Qt的官方Demo文档就行,这个类是从Qt4.6开始被引进的,所以也就是说从Qt4.6开始一直到后续的版本,都是可以使用的。
第三,代码的实现
通过QProxyStyle的官方接口介绍,可以非常清晰的了解到,如果想要实现自定义样式,需要自己定义一个类,从QProxyStyle派生,实现对应的虚函数即可。
那么,针对咱们今天所说的QTabWidget的情况,应该怎么实现呢,我直接上代码吧,这样估计同学们看的比较直接,也易于接受和理解,毕竟都是编程序的,嘿嘿。
自定义一个类,并实现对应绘制函数drawControl:
这样的话,你的自定义样式代理就实现了,接下来就是在代码中调用了,具体的调用方法如下所示:
ui.tabWidget->tabBar()->setStyle(new CustomTabStyle);
其实就这么简单,到这里,基本上就完成了一个定义样式的代理封装,如果你还有其他的功能需求,你也可以自行研究下这个类的其他虚函数,试着写点功能,说不定你的代码能力会提升很快的。加油,同学们,有问题随时Call me!
最后给大家发一个实现后的效果截图:
如果这篇文档对你有所帮助,不妨关注下我们,同时欢迎转发到朋友圈