QTabWidget改變tabBar位置 並改變文字方向

一、

 

 

 

二、

#ifndef CUSTOMTABBAR_H
#define CUSTOMTABBAR_H
#include <QStyleOptionTab>
#include <QStylePainter>
#include <QTabBar>

class CustomTabBar:public QTabBar
{
public:
    CustomTabBar();
    QSize tabSizeHint(int index) const override;
protected:
    void paintEvent(QPaintEvent *) override;
};

#endif // CUSTOMTABBAR_H

 

#include "customtabbar.h"

CustomTabBar::CustomTabBar()
{

}

QSize CustomTabBar::tabSizeHint(int index) const
{
    QSize s = QTabBar::tabSizeHint(index);
    s.transpose();
    return s;
}

void CustomTabBar::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();

    }

}

 

 

#ifndef KTABWIDGET_H
#define KTABWIDGET_H

#include <QWidget>
#include <QTabWidget>
#include "utility/customtabbar.h"
class KTabWidget : public QTabWidget
{
    Q_OBJECT
public:
    explicit KTabWidget(QWidget *parent = nullptr);

signals:

};

#endif // KTABWIDGET_H

 

#include "ktabwidget.h"

KTabWidget::KTabWidget(QWidget *parent)
    : QTabWidget(parent)

{
    this->setTabBar(new CustomTabBar());
    this->setTabPosition(QTabWidget::West);
}

 

 

使用

    KTabWidget *tabWidget=new KTabWidget(this);
    tabWidget->addTab(saIOMonitor,"IO監控");
    tabWidget->addTab(saIOSet,"I/O設置");
    tabWidget->addTab(saDIDOWidget,"DI/DO功能監視");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章