qt tabwidget使用_word横向表格变竖向

qt tabwidget使用_word横向表格变竖向QTabWidget竖向QTabBar横向

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

参考文件引用自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);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190455.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python实现word文档批量转成自定义格式的excel文档

    python实现word文档批量转成自定义格式的excel文档

    2022年2月13日
  • 基于OIDC实现单点登录SSO、第三方登录[通俗易懂]

    基于OIDC实现单点登录SSO、第三方登录[通俗易懂]OIDC联合身份认证机制背景概念1OIDC身份认证协议2基于OIDC实现SSO2.1统一登录2.1.1流程2.1.2RP相关接口2.1.3OP相关接口2.2统一登出2.2.1流程2.2.2RP需要在向OP注册时提供2.2.3RP相关接口2.2.4OP相关接口2.3持续监视2.3.1流程2.3.2RP相关接口2.3.3OP相关接口3在OIDC的SSO中集成第三方登录(…

    2022年8月30日
  • mybatis二级缓存实现_mybatis源码深度解析

    mybatis二级缓存实现_mybatis源码深度解析 二级缓存的作用域是全局,换句话说,二级缓存已经脱离SqlSession的控制了。在测试二级缓存之前,我先把结论说一下:二级缓存的作用域是全局的,二级缓存在SqlSession关闭或提交之后才会生效。在分析MyBatis的二级缓存之前,我们先简单看下MyBatis中一个关于二级缓存的类(其他相关的类和接口之前已经分析过):org.apache.ibatis.mapping.Ma…

    2022年9月2日
  • 计算机科学丛书豆瓣_有关计算机科学与技术专业的书籍

    计算机科学丛书豆瓣_有关计算机科学与技术专业的书籍1.TheArtofComputerProgramming  Author:Donald.E.Knuth  Website:http://www-cs-faculty.stanford.edu/~knuth/taocp.html  BookInfo:这部书被誉为20世纪最重要的20部著作之一,与Einstein的>并列,是计算机科学领域的权威著作.全书共分7卷,目前已经出版了3卷

    2022年10月31日
  • Linux WIFI优先连接5G频段「建议收藏」

    Linux WIFI优先连接5G频段「建议收藏」最近遇到一个项目,要求树莓派无线优先连接5G,目前测试了一个方法,先记录下来,测试下来是有用的。现场无线网络知识2.4G和5G双频,SSID和密码都是相同的,树莓派在这个环境中,优先连接2.4G网络。由于2.4G网络干扰问题,网络通讯不稳定,因此需要树莓派优先连接到5G网络。有查到通过修改wpa_supplicant.conf文件中,定义frep_list的频点值,可以修改单独连接到5WIFI.后来经过测试,将5G频段排序到2.4G频段之前,无线会优先连接5G网络,如果5G网络不可用,也可以连接到

    2022年10月20日
  • pycharm激活码2021年(JetBrains全家桶)「建议收藏」

    (pycharm激活码2021年)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S3…

    2022年3月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号