QTabWidget 竖向 QTabBar横向

2023-11-08

参考文件引用自http://blog.csdn.net/skyztttt/article/details/52448992
你的评论,是我的动力

正常设置QTabWidget->setTabPosition(QTabWidget::West);设置完竖向之后会发现QTabBar仍然是竖向的
所以我们需要重绘一下Qtabbar 下面是重绘代码
/******************customTabStyle.h**************************/
这里写图片描述

#ifndef CUSTOMTABSTYLE_H
#define CUSTOMTABSTYLE_H
#include <QPainter>
#include <QProxyStyle>
#include <QStyleOptionTab>
#include <QRect>
#include <QSize>
class CustomTabStyle : public QProxyStyle
{
public:
    QSize sizeFromContents(ContentsType type, const QStyleOption *option,
        const QSize &size, const QWidget *widget) const
    {
        QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
        if (type == QStyle::CT_TabBarTab) {
            s.transpose();
            s.rwidth() = 150; // 设置每个tabBar中item的大小
            s.rheight() = 50;
        }
        return s;
    }
    void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
    {
        if (element == CE_TabBarTabLabel) {
            if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
                QRect allRect = tab->rect;
                allRect.setWidth(allRect.width() - 5);
                allRect.setHeight(allRect.height() - 2);
                //选中状态
                if (tab->state & QStyle::State_Selected) {
                    //save用以保护坐标,restore用来退出状态
                    painter->save();
                    painter->setBrush(QBrush(0x004ea1));
                    //矩形
                    //painter->drawRect(allRect.adjusted(0, 0, 0, 0));
                    //带有弧线矩形
                    painter->drawRoundedRect(tab->rect, 8, 8);
                    painter->restore();
                }
                //hover状态
                else if(tab->state & QStyle::State_MouseOver){
                    painter->save();
                    painter->setBrush(QBrush(0x004ea1));
                    painter->drawRoundedRect(allRect, 8, 8);
                    painter->restore();
                }
                else{
                    painter->save();
                    painter->setBrush(QBrush(0x78aadc));
                    painter->drawRoundedRect(allRect, 8, 8);
                    painter->restore();
                }
                QTextOption option;
                option.setAlignment(Qt::AlignCenter);
                painter->setFont(QFont("楷体", 18, QFont::Bold));
                painter->setPen(0xffffff);
                painter->drawText(allRect, tab->text, option);
                return;
            }
        }
        if (element == CE_TabBarTab) {
            QProxyStyle::drawControl(element, option, painter, widget);
        }
    }
};

endif // CUSTOMTABSTYLE_H

/****************************引用方法*****************************/

    QTabWidget* tab = new QTabWidget();
    QPushButton* closeButton = new QPushButton;
    closeButton->setObjectName("closeButton");
    QPushButton* button = new QPushButton("button");
    tab->addTab(closeButton, "关闭");
    tab->addTab(button, "按钮");
    tab->setTabPosition(QTabWidget::West);//QTabWidget竖向
    tab->tabBar()->setStyle(new CustomTabStyle);//注意,设置上述代码风格 就可以实现QTabBar横向
    setCentralWidget(tab);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTabWidget 竖向 QTabBar横向 的相关文章

随机推荐

  • 计算机组成原理:了解计算机三种编址方式(按位编址、字节编址、字编址)

    目录 一 首先简单了解一下字节 Byte 和位 b 二 B KB MB GB之间的转换关系 三 目前计算机有三种编址方式 1 按位编址 1b 2 字节编址 1 Byte 8b 3 字编址 机器字长word 32b 64b 四 例题来加深理解
  • matlab 从航空激光雷达数据中提取森林度量和单棵树属性

    目录 一 功能概述 1 算法概述 2 加载和可视化数据 3 分割提取地面点和非地面点 4 高程归一化 5 提取森林指标 6 冠层高度模型 7 检测树顶 8 单树分割 9 提取树属性 二 完整代码 三 结果展示
  • 借据与电子借据

    借据 借据是个人或单位借用个人或公家的现金 财物时所写的凭证性的一种应用文 借据 条 是人们在日常工作和生活中经常使用的一种应用文 借据从发文的角度看可以分为两类 一类是个人在借他人或单位的钱物时向对方所写的借据或借条 另一类是单位向个人或
  • 【银行转账-功能测试分析】

    转账功能分析 通过选择付款账号 填写转账金额 输入收款账户 含收款账号 收款人姓名 开户行 以及其他附加信息 手机号 备注等 填写好之后 进入安全认证页面选择安全工具 填写安全密码 最后提交转账 测试分析与设计思路 1 正常流程类设计 确保
  • elementui-slider 滑动时会重置为0的问题解决

    文章目录 问题描述 问题排查 问题解决 总结 问题描述 首次打开有 elementui slider的页面 不管滑动哪个滑块 滑动时都会自动归0 划得动 但是会自动回到最左侧0的位置 但是他确实触发了change函数 问题排查 尝试了很多方
  • Sentinel限流算法详解(硬啃)

    文章目录 常见四种限流算法 固定窗口计数器 滑动窗口计数器 漏桶 也有称漏斗 Leaky bucket 令牌桶 Token bucket Sentinel源码举例 滑动窗口 漏桶 令牌桶 常见四种限流算法 固定窗口计数器 固定窗口 相比其他
  • 如何进入安全模式? windows系统使用小技巧

    一 Windows95环境下进入安全模式 1 开启计算机 如果正在运行Windows 请重启计算机 2 在计算机开启时 请留意观察屏幕 当出现Starting Windows 95的时候 按住F5键 这样就能进入安全模式 3 或者 在计算机
  • easyexcel poi 一个模板导出excel包含多个sheet

    easy poi 一个模板导出excel包含多个sheet 1 简述 2 导出代码实例 3 导出模板 4 导出效果 5 项目实战案例 1 简述 通过调用ExcelExportUtil exportExcelClone map params
  • mybatis原理(含图)

    上面中流程就是MyBatis内部核心流程 每一步流程的详细说明如下文所述 1 读取MyBatis的配置文件 mybatis config xml为MyBatis的全局配置文件 用于配置数据库连接信息 2 加载映射文件 映射文件即SQL映射文
  • 字符的点阵显示(模拟户外广告显示屏)

    字符的点阵显示 电子科技大学软件学03级02班 周银辉一 效果二 关于C 读取字符点阵的代码 原理就不再阐述了 到Baidu里面搜一下 很多 不过一般都是C C 的 说明 对于一个字符 GetWordLattics函数返回的bool 表示一
  • Windows 10

    前言 Windows作为工作机 对于计算机系的同学来说 主要是在于利用图形化的界面直观的创建虚拟机 典型的有代表性的是virtualbox和VMware这两家公司的桌面级虚拟化软件 尤其是小白这样的初学者 更高层次的虚拟机技术才是kvm x
  • 信息安全技术 网络安全漏洞分类分级指南

    声明 本文是学习GB T 30279 2020 信息安全技术 网络安全漏洞分类分级指南 而整理的学习笔记 分享出来希望更多人受益 如果存在侵权请及时联系我们 网络安全漏洞分级 概述 网络安全漏洞分级根据漏洞分级的场景不同 分为技术分级和综合
  • 这里是哪里错显示[Error] ‘else‘ without a previous ‘if‘?

    include
  • (c语言 )输入10个学生5门课的成绩,分别用函数求:每个学生平均分;每门课的平均分;

    c语言 输入10个学生5门课的成绩 分别用函数求 每个学生平均分 每门课的平均分 include
  • 新版Spring Boot(9)- Spring Boot 整合 Web 开发(5)

    1 路径映射 不需要每个Controller都加路径映射 Configuration public class WebMvcConfig implements WebMvcConfigurer 页面只是简单的返回 不需要返回数据 param
  • WPF Image 旋转图片方法

    WPF在对图片进行旋转时 可以使用Image RenderTransform 设置它的初始旋转角度Angle 默认是0 在旋转照片图像时 还需要设置图片的旋转中心 CenterX CenterY 一般都设置它的宽度一半 高度一半 先看一下效
  • php按钮添加post请求,PHP发送POST请求的常用方式

    PHP发送POST请求我们使用的是curl来操作了 下面来看看一些常用的post数据的例子 具体的一起和111cn小编来看看吧 在PHP开发的过程中经常需要发送POST请求 POST相比GET要安全很多 而且传输的数据量也较大 下面PHP程
  • uboot启动内核的相关命令详解——boot、bootm

    1 boot和bootm命令的联系 当我们进入uboot的命令终端后 可以利用boot和bootm来启动内核 但是命令的使用方式有区别 直接输入boot命令就可以启动内核 如果使用bootm命令 后面还需要传入内核在DDR中的地址 1 bo
  • css内容达到最底部但滚动条没有滚动到底部

    也是犯了一个傻狗一样的错误 滚动条样式是直接复制的蓝湖的代码 有个高度 然后就出现了这样的bug 看了好久一直以为是布局或者overflow的问题 最后发现是因为我给这个滚动条加了个高度 我也是傻狗一样的 滚动条高度是通过内容计算出来的 怎
  • QTabWidget 竖向 QTabBar横向

    参考文件引用自http blog csdn net skyztttt article details 52448992 你的评论 是我的动力 正常设置QTabWidget gt setTabPosition QTabWidget West