zoukankan      html  css  js  c++  java
  • 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功能监视");
  • 相关阅读:
    python3学习之匿名函数
    python3学习之装饰器
    Linux服务器管理神器-IPython
    Linux 安装python3.4
    Linux一些常用操作命令
    Java并发知识分享
    LINUX 学习笔记 账号与群组的管理
    用JAVA写查询一个字符串中是否包含另外一个字符串以及出现的次数
    jQuery性能优化
    jQuery实用工具函数
  • 原文地址:https://www.cnblogs.com/ike_li/p/14914139.html
Copyright © 2011-2022 走看看