• 11884阅读
  • 5回复

QTabWidget 想在标题上增加点背景色,怎么实现? [复制链接]

上一主题 下一主题
离线dinotiger510
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-19

如题:

找了很久,没发现QTabWidget有函数能修改标题的背景色。


麻烦知道的大虾告知。。。。谢谢!
离线紫霞风语
只看该作者 1楼 发表于: 2009-11-21
ui.gatewaystatus_tableView->horizontalHeader()->setStyleSheet("background-color: #E6ECF6");
颜色你自己选 写red也行
离线dinotiger510
只看该作者 2楼 发表于: 2009-11-23
感谢楼上的回答。不过貌似不对。。。

我将的是QTabWidget。而不是QTableWidget。。。

期待高手。。。

自顶一个
离线snailbing

只看该作者 3楼 发表于: 2009-11-23
要写一个 qtabwidget 的子类,qtabwidget 有一个 QTabBar * tabBar () const 函数,这个函数返回的就是 qtab 的整个标志。
这样可以设置前景色
tabwidget->tabBar()->setTabTextColor ( int index, const QColor & color )

但是想要设置背景色,那有点儿痛苦了:
接着写一个 QTabBar 的子表 MyTabBar, QTabBar 有一个方法 void initStyleOption ( QStyleOptionTab * option, int tabIndex ) const 在子表中把它设置为 pubilc。
然后:
     QStyleOptionTab option;
     option.initFrom(this);

     QPalette palette = this->palette ();
     palette.setColor (ColorGroup group, ColorRole role /*QPalette::Window*/, const QColor & color);
     option.palette = palette;
     qobject_cast<MyTabBar *>(tabwidget->tabBar())->initStyleOption (&option, int tabIndex );

这个方法我自己没有测试过,而且写的也只是大概的,具体的内容还是要看你自己的实际处理情况。
离线dinotiger510
只看该作者 4楼 发表于: 2009-11-24
非常感谢3楼的耐心回答。。

我去试试。。。 QTabBar * tabBar () const 是protect类型函数。。只能继承QTabWidget才能访问。

难点就是在于背景色的添加。。。前景色都好办。。。。

用了这么久的QT4,感觉QT4反而封装过多,很多QT3很实用的函数,QT4都抛弃了。
离线halida

只看该作者 5楼 发表于: 2009-11-25
直接修改paintEvent就好了嘛,想画什么画什么。
快速回复
限100 字节
 
上一个 下一个