标签左右布局竖直排列文字#ifndefCTABBAR_H#defineCTABBAR_H#includeQTabBarclassCTabBar:publicQTabBar{Q_OBJECTusingSuperQTabBar;public:explicitCTabBar(QWidget*parentnullptr);protected:virtualQSizetabSizeHint(intindex)constoverride;virtualvoidpaintEvent(QPaintEvent*event)override;};#endif// CTABBAR_H#includeCTabBar.h#includeQDebug#includeQStyleOptionTab#includeQStylePainterCTabBar::CTabBar(QWidget*parent):QTabBar(parent){setShape(QTabBar::Shape::RoundedWest);}QSizeCTabBar::tabSizeHint(intindex)const{QSize sSuper::tabSizeHint(index);// 关键转换长宽s.transpose();returns;}voidCTabBar::paintEvent(QPaintEvent*event){Q_UNUSED(event)QStylePainterpainter(this);QStyleOptionTab opt;for(inti0;icount();i){initStyleOption(opt,i);painter.drawControl(QStyle::CE_TabBarTabShape,opt);painter.drawItemText(opt.rect,Qt::AlignCenter,palette(),true,tabText(i));}}标签左右布局竖直排列文字#ifndefCTABBAR_H#defineCTABBAR_H#includeQTabBarclassCTabBar:publicQTabBar{Q_OBJECTusingSuperQTabBar;public:explicitCTabBar(QWidget*parentnullptr);protected:virtualQSizetabSizeHint(intindex)constoverride;virtualvoidpaintEvent(QPaintEvent*event)override;};#endif// CTABBAR_H#includeCTabBar.h#includeQDebug#includeQStyleOptionTab#includeQStylePainterCTabBar::CTabBar(QWidget*parent):QTabBar(parent){setShape(QTabBar::Shape::RoundedWest);}QSizeCTabBar::tabSizeHint(intindex)const{QSize sSuper::tabSizeHint(index);QString tmptabText(index);intsizetmp.size();QFontMetricsfm(font());intwdfm.horizontalAdvance(\n);intsumwd(2*size-1)*wd;QSizess(s.width(),sumwd);returnss;}voidCTabBar::paintEvent(QPaintEvent*event){Q_UNUSED(event)QStylePainterpainter(this);QStyleOptionTab opt;for(inti0;icount();i){initStyleOption(opt,i);painter.drawControl(QStyle::CE_TabBarTabShape,opt);QString str;QString tmptabText(i);intsizetmp.size();for(intj0;jsize-1;j){if(tmp[j]!\n){strQString(tmp[j])\n;}else{strQString(tmp[j]);}}strtmp[size-1];painter.drawItemText(opt.rect,Qt::AlignCenter,palette(),true,str);}}