当前位置:   article > 正文

Qt tabWidget设置tab左右显示时 文字横向显示_qtabwidget标签文字横向

qtabwidget标签文字横向

 Qt自带tabwidget当设置tab左右显示时,tab中文字纵向显示,要想文字横向显示,得重写tab。

步骤1:继承tab,重绘tab

  1. #ifndef CUSTABBAR_H
  2. #define CUSTABBAR_H
  3. #include <QObject>
  4. #include <QTabBar>
  5. class CusTabBar : public QTabBar
  6. {
  7. public:
  8. CusTabBar();
  9. QSize tabSizeHint(int index) const override;
  10. protected:
  11. void paintEvent(QPaintEvent *) override;//重绘tab文字
  12. };
  13. #endif // CUSTABBAR_H
  14. #include "custabbar.h"
  15. #include <QStylePainter>
  16. #include <QStyleOptionTab>
  17. CusTabBar::CusTabBar()
  18. {
  19. }
  20. QSize CusTabBar::tabSizeHint(int index) const
  21. {
  22. QSize s = QTabBar::tabSizeHint(index);
  23. s.transpose();
  24. return s;
  25. }
  26. void CusTabBar::paintEvent(QPaintEvent *)
  27. {
  28. QStylePainter painter(this);
  29. QStyleOptionTab opt;
  30. for(int i = 0;i < count();i++)
  31. {
  32. initStyleOption(&opt,i);
  33. painter.drawControl(QStyle::CE_TabBarTabShape, opt);
  34. painter.save();
  35. QSize s = opt.rect.size();
  36. s.transpose();
  37. QRect r(QPoint(), s);
  38. r.moveCenter(opt.rect.center());
  39. opt.rect = r;
  40. QPoint c = tabRect(i).center();
  41. painter.translate(c);
  42. painter.rotate(90);//西方向
  43. painter.translate(-c);
  44. painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
  45. painter.restore();
  46. }
  47. }

步骤2:创建tabwidget

  1. #ifndef KTABWIDGET_H
  2. #define KTABWIDGET_H
  3. #include <QObject>
  4. #include <custabbar.h>
  5. #include <QTabWidget>
  6. class KTabWidget : public QTabWidget
  7. {
  8. public:
  9. explicit KTabWidget();
  10. //protected:
  11. };
  12. #endif // KTABWIDGET_H
  13. #include "ktabwidget.h"
  14. KTabWidget::KTabWidget()
  15. {
  16. this->setTabBar(new CusTabBar());

步骤三:根据创建的tabwidget,创建tabwidget:

  1. m_pTabWidget = new KTabWidget;
  2. QWidget *w1 = new QWidget;
  3. w1->setStyleSheet("background-color:rgb(54,54,54)");
  4. QWidget *w2 = new QWidget;
  5. w2->setStyleSheet("background-color:rgb(54,154,54)");
  6. QWidget *w3 = new QWidget;
  7. w3->setStyleSheet("background-color:rgb(54,54,154)");
  8. m_pTabWidget->setTabPosition(QTabWidget::East);
  9. m_pTabWidget->insertTab(0, w1, "tab1");
  10. m_pTabWidget->insertTab(1, w2, "tab2");
  11. m_pTabWidget->insertTab(2, w3, "tab3");

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/861867
推荐阅读
相关标签
  

闽ICP备14008679号