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

来源:互联网 发布:韩顺平php视频下载 编辑:程序博客网 时间:2024/06/03 22:13

这里写图片描述

这里写图片描述
QTabWidget 设置setTabPosition 为West时,文字垂直显示。

/*    创建工程    作者:七嘉伯    博客地址:http://www.qijiabo.cn    QQ820091856    注:请尊重作者版权*/#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