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横向 的相关文章

  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 另一个宏中的 Q_PROPERTY 宏

    如何放置Q PROPERTY另一个宏里面 辅助宏 define SimpleAllinOne member type public void Set member type arg member m member arg member ty
  • 如何在 QT 安装程序框架中区分每用户安装与系统范围安装?

    我正在使用一些名为 pgModeler 的应用程序 它的当前版本提供了一个基于 QT 安装程序框架的安装程序 Windows 上该安装程序的问题是它安装每个用户的开始菜单条目 https github com pgmodeler pgmod
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 在哪里可以找到 QT 5.3.0 命令提示符

    用于学习Qt的书 C gui programming with qt 4 2nd 版 我需要Qt的命令提示符 我已经安装了Qt 5 3 0 creator 5 3 0开源 但不知道它的命令提示符在哪里 有人可以帮助我吗 我认为您正在寻找的是
  • 如何在 QT 中绘制点?

    我正在用 QT 用 C 编写一个应用程序 其中有 n 个点并计算它的凸包 然而 一旦计算出来 我不知道如何绘制点并绘制船体的边界 制作菜单按钮等很简单 但我不确定我是否知道执行此操作的工具 你怎么做到这一点 图形视图 addEllipse
  • QComboBox 下拉项边距

    我想设计我的风格QComboBox为下拉项目留出边距 现在是这样的 我想要这样的东西 我尝试过 QComboBox QAbstractItemView item margin 3px 但它不起作用 你能帮我解决这个问题吗 您想在项目之间设置
  • new 运算符(以及 malloc)无法分配约 450 MB 的内存 [重复]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序在内存中存储大约 2 2 亿个短值的数组 该数据块的分配方式如下 short arrayName new short SIZE OF ARRAY 然后将文件的内容读入内存 在团队中的另一
  • QMutex 是否需要是静态的,以便此类实例的其他线程调用知道暂停其操作?

    从多个线程调用以下附加函数 我不希望数据重写附加 因为计数器尚未增加 除了当前使用 Append 的线程之外 这是否会挂起所有进入的线程 或者其他线程会继续运行而不追加数据吗 互斥锁是否需要是 静态 的 或者每个实例都知道要暂停操作吗 如果
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方

随机推荐

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

    目录 一 首先简单了解一下字节 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