#include "ctai_tabbar.h"

ctai_tabbar::ctai_tabbar()
{
    // 设置图标与文字间距
    setIconSize(QSize(20, 20));
}
ctai_tabbar::~ctai_tabbar()
{
}
QSize ctai_tabbar::tabSizeHint(int index) const
{
    QSize size = QTabBar::tabSizeHint(index);
    return QSize(size.width() + 60, size.height()-30); // 扩大标签尺寸
}
void ctai_tabbar::paintEvent(QPaintEvent *event)
{
    //创建一个QStylePainter对象painter，用于绘制此小部件的样式元素
    QStylePainter painter(this);
    //创建一个QStyleOptionTab对象opt，用于指定绘制选项
    QStyleOptionTab opt;
    
    //遍历所有选项卡
    for(int i = 0;i < count();i++)
    {
        //用索引i初始化opt对象的样式选项
        initStyleOption(&opt,i);

        //指示绘图器使用opt中指定的样式来绘制选项卡的形状
        painter.drawControl(QStyle::CE_TabBarTabShape, opt);
        //保存当前绘图器的状态
        painter.save();
 
        //从opt对象中获取选项卡的大小
        QSize s = opt.rect.size();
        //转置大小s
        s.transpose();
        //创建一个矩形r，其左上角在原点，大小为s
        QRect r(QPoint(), s);
        //将矩形r的中心移动到原始选项卡矩形的中心
        r.moveCenter(opt.rect.center());
        //将opt对象中的矩形更新为新位置
        opt.rect = r;
 
        //计算索引i处选项卡的中心点c
        QPoint c = tabRect(i).center();
        //将绘图器平移到中心点c
        painter.translate(c);
        //将绘图器旋转90度
        painter.rotate(90);
        //将绘图器平移到原始位置
        painter.translate(-c);
        //指示绘图器使用opt中指定的样式来绘制选项卡的标签
        painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
        //将绘图器恢复到应用变换之前保存的状态
        painter.restore();
    }
}