赞
踩
Qt自带tabwidget当设置tab左右显示时,tab中文字纵向显示,要想文字横向显示,得重写tab。
步骤1:继承tab,重绘tab
- #ifndef CUSTABBAR_H
- #define CUSTABBAR_H
-
- #include <QObject>
- #include <QTabBar>
-
- class CusTabBar : public QTabBar
- {
- public:
- CusTabBar();
- QSize tabSizeHint(int index) const override;
- protected:
- void paintEvent(QPaintEvent *) override;//重绘tab文字
- };
-
- #endif // CUSTABBAR_H
-
- #include "custabbar.h"
- #include <QStylePainter>
- #include <QStyleOptionTab>
- CusTabBar::CusTabBar()
- {
-
- }
-
- QSize CusTabBar::tabSizeHint(int index) const
- {
- QSize s = QTabBar::tabSizeHint(index);
- s.transpose();
- return s;
- }
-
- void CusTabBar::paintEvent(QPaintEvent *)
- {
- QStylePainter painter(this);
- QStyleOptionTab opt;
- for(int i = 0;i < count();i++)
- {
- initStyleOption(&opt,i);
- painter.drawControl(QStyle::CE_TabBarTabShape, opt);
- painter.save();
-
- QSize s = opt.rect.size();
- s.transpose();
- QRect r(QPoint(), s);
- r.moveCenter(opt.rect.center());
- opt.rect = r;
-
- QPoint c = tabRect(i).center();
- painter.translate(c);
- painter.rotate(90);//西方向
- painter.translate(-c);
- painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
- painter.restore();
-
- }
- }

步骤2:创建tabwidget
- #ifndef KTABWIDGET_H
- #define KTABWIDGET_H
-
- #include <QObject>
- #include <custabbar.h>
- #include <QTabWidget>
- class KTabWidget : public QTabWidget
- {
- public:
- explicit KTabWidget();
- //protected:
-
- };
-
- #endif // KTABWIDGET_H
-
-
-
-
- #include "ktabwidget.h"
-
- KTabWidget::KTabWidget()
- {
- this->setTabBar(new CusTabBar());

步骤三:根据创建的tabwidget,创建tabwidget:
- m_pTabWidget = new KTabWidget;
- QWidget *w1 = new QWidget;
- w1->setStyleSheet("background-color:rgb(54,54,54)");
-
- QWidget *w2 = new QWidget;
- w2->setStyleSheet("background-color:rgb(54,154,54)");
-
- QWidget *w3 = new QWidget;
- w3->setStyleSheet("background-color:rgb(54,54,154)");
-
- m_pTabWidget->setTabPosition(QTabWidget::East);
- m_pTabWidget->insertTab(0, w1, "tab1");
- m_pTabWidget->insertTab(1, w2, "tab2");
- m_pTabWidget->insertTab(2, w3, "tab3");
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。