您的位置:首页 > 编程语言 > Qt开发

QT之QTabWidget 为West方向时实现文字垂直显示

2017-07-04 14:55 239 查看




QTabWidget 设置setTabPosition 为West时,文字垂直显示。

/*
创建工程
作者:七嘉伯
博客地址:http://www.qijiabo.cn
QQ:820091856
注:请尊重作者版权
*/
#ifndef CUSTOMTABSTYLE_H
#define CUSTOMTABSTYLE_H
#include <QProxyStyle>
#include <QPainter>
#include <QStyleOptionTab>

class CustomTabStyle : public QProxyStyle
{
public:
QSize sizeFromContents(ContentsType type, const QStyleOption *option,
const QSize &size, const QWidget *widget) const
{
QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
if (type == QStyle::CT_TabBarTab) {
s.transpose();
s.rheight() = 90;
s.rwidth() = 17;
}
return s;
}

void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == CE_TabBarTabLabel) {
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
QRect allRect = tab->rect;

if (tab->state & QStyle::State_Selected) {
painter->save();
painter->setPen(0x89cfff);
painter->setBrush(QBrush(0x89cfff));
painter->drawRect(allRect.adjusted(1, 3, -1, -6));
painter->restore();
}
QTextOption option;
option.setAlignment(Qt::AlignCenter);
if (tab->state & QStyle::State_Selected) {
painter->setPen(0xf8fcff);
}
else {
painter->setPen(0x5d5d5d);
}
painter->drawText(allRect, tab->text, option);
return;
}
}

if (element == CE_TabBarTab) {
QProxyStyle::drawControl(element, option, painter, widget);
}
}
};

#endif // CUSTOMTABSTYLE_H


源码下载地址:

http://www.qijiabo.cn/2017/07/04/qt%e4%b9%8bqtabwidget-%e4%b8%bawest%e6%96%b9%e5%90%91%e6%97%b6%e5%ae%9e%e7%8e%b0%e6%96%87%e5%ad%97%e5%9e%82%e7%9b%b4%e6%98%be%e7%a4%ba
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐