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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 开关稳压DC—DC降压电路简介

    开关稳压DC—DC降压电路简介  在做数字压力开关项目时,电源输入要求是12V~24V±10%,系统内需要5V和3.3V的电源,这时提供了三个方案从中选择,方案一:使用24V-5V和5V-3.3V的LDO线性稳压芯片。方案二:使用24V-12V,12V-5V,5V-3.3V种LDO线性稳压芯片。方案三:使用24V-5V开关稳压芯片和5V-3.3V的线性稳压芯片。  最后考虑决定使用方案三,方案一中24V-5V的线性稳压芯…

  • 2021年美赛A题翻译

    2021年美赛A题翻译美赛A题:真菌欢迎使用Markdown编辑器2021年美赛交流qq群:523820707需要电子版的可以关注关注公众号“1024遇见ta”:回复”A题”需要“美赛历年真题和特等奖论文集”的关注公众号“1024遇见ta”,回复“美赛”即可获得资源包,有条件的支持一下哈!欢迎使用Markdown编辑器2021年美赛交流qq群:523820707需要电子版的可以关注关注公众号“1024遇见ta”:回复“A题”需要“美赛历年真题和特等奖论文集”的关注公众号“1024遇见ta”,回复“美

  • 如何彻底卸载sql2019_win10无法卸载软件

    如何彻底卸载sql2019_win10无法卸载软件重新安装SQLServer2019等要注意的事项

    2022年10月21日
  • JS闭包理解_闭包的定义

    JS闭包理解_闭包的定义一、变量作用域   全局变量   局部变量函数内部可以直接读取全局变量,函数外部无法读取函数内部的局部变量二、从函数外部读取局部变量解决方法:在函数内部在定义一个函数functionf1(){   varn=1;   functionf2(){       alert(n);   }}在上诉代码中,函数f2被包括在函数f1内部,这…

    2022年10月25日
  • PyCharm常用设置(图解)

    PyCharm常用设置(图解)1.保存设置pycharm中的设置是可以导入和导出的,file>exportsettings可以保存当前pycharm中的设置为jar文件保存在桌面上2.导入设置重装时可以直接importsettings>jar文件,就不用重复配置了确认是否要导入点击确认重新启动3.设置Python自动引入包设置Python自动引入包,要先在…

  • oracle创建数据库文件时出错_oracle错误代码大全

    oracle创建数据库文件时出错_oracle错误代码大全一、创建数据库时报必须运行Netca以配置监听程序,然后才能继续。     解决方法:     1、停止Oracle该服务;    2、用系统管理员身份运行netmanager删除监听程序;    3、用netconfigurationassistant添加监听程序;    4、用系统管理员身份运行databaseconf…

发表回复

您的电子邮箱地址不会被公开。

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