qt tabwidget切换_qtabwidget tab样式

qt tabwidget切换_qtabwidget tab样式感谢https://blog.csdn.net/skyztttt/article/details/52448992QTabWidget默认的Tab方向是水平的,从属性设置更改tabPosition=west后的效果如下图最终效果图#ifndefMH1_H#defineMH1_H#include<QMainWindow>#include<QPainter&gt…

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

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

感谢 https://blog.csdn.net/skyztttt/article/details/52448992

QTabWidget默认的 Tab方向是水平的,从属性设置更改 tabPosition=west后的效果如下图

qt tabwidget切换_qtabwidget tab样式

最终效果图

qt tabwidget切换_qtabwidget tab样式

#ifndef MH1_H
#define MH1_H

#include <QMainWindow>
#include <QPainter>
#include <QProxyStyle>
#include <QStyleOptionTab>

class CustomTabStyle : public QProxyStyle
{
public:
    /* sizeFromContents
     *  用于设置Tab标签大小
     * 1.获取原标签大小
     * 2.宽高切换
     * 3.强制宽高
     * 4.return
     * */
    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() = 120; // 设置每个tabBar中item的大小
            s.rheight() = 44;
        }
        return s;
    }

    /* drawControl
     *  画控件
     * 1.过滤CE_TabBarTabLabel
     * 2.选择状态下的背景绘制
     *      a.获取Rect
     *      b.保存旧的画笔
     *      c.设置新画笔
     *      d.画 Rect
     *      e.恢复旧的画笔
     * 3.设定Text对齐及选中/非选中状态下的Text颜色
     * 4.过滤CE_TabBarTab,对其进行绘制
     * */
    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;

                if (tab->state & QStyle::State_Selected) {
                    painter->save();
                    painter->setPen(0x89cfff);
                    painter->setBrush(QBrush(0x89cfff));
                    QRect nrct = allRect.adjusted(6, 6, -6, -6);
                    painter->drawRect(allRect.adjusted(6, 6, -6, -6));
                    painter->restore();
                }
                QTextOption option;
                option.setAlignment(Qt::AlignCenter);
                if (tab->state & QStyle::State_Selected) {
                    painter->setPen(0xf8fcff);
                }
                else {
                    painter->setPen(0x5d5d5d);
                }

                painter->drawText(allRect, tab->text, option);
                return;
            }
        }

        if (element == CE_TabBarTab) {
            QProxyStyle::drawControl(element, option, painter, widget);
        }
    }
};


#endif // MH1_H

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

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

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


相关推荐

  • getElementById 方法及用法

    getElementById 方法及用法[转]顾明思义,get-Element-By-Id,就是通过ID来设置/返回HTML标签的属性及调用其事件与方法。用这个方法基本上可以控制页面所有标签,条件很简单就是给每个标签分配一个ID号:document.getElementById(“link”).href;document.getElementById(“link”).target;document.getElementById(“i

    2022年7月15日
    14
  • MIPS汇编语言指令分类及寻址模式

    MIPS汇编语言指领分类及寻址模式一、普及一些相关概念指令集:一个给定的计算机体系结构所包含的指令集合。存储程序概念:多种类型的指令和数据均以数字形式存储于存储器的概念,存储程序型计算机即缘于此。1二、MIPS操作数之32个寄存器寄存器名字寄存器编号寄存器功能$zero$0恒等于零$at$1被汇编器保留,用于处理大的常数$v0–$v

    2022年4月17日
    40
  • AppSettings和ConnectionStrings的区别

    AppSettings和ConnectionStrings的区别AppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings. 1.  providerName=”System.Data.SqlClient”/>  或是  providerName=”System.Data.SqlClient”/>  在里,在页面还可以这样引用.

    2022年5月21日
    44
  • JAVA:定时器的三种方法(详细注解)

    JAVA:定时器的三种方法(详细注解)第一种:创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果,代码如下:publicclassTask1{ publicstaticvoidmain(String[]args){ //runinasecond //每一秒钟执行一次 finallongtimeInterval=10…

    2022年9月18日
    0
  • Java经典设计模式之七大结构型模式(附实例和详解)

    Java经典设计模式之七大结构型模式(附实例和详解)

    2020年11月12日
    161
  • 【玩转嵌入式屏幕显示】(六)ST7789 SPI LCD硬件垂直滚动功能的使用

    一、想法萌生小熊派开发板的LCD小屏幕使用是ST7789驱动IC,之前一直有在该块屏幕上实现滚动显示的想法,最初构想在MCU侧创建一个大的队列,将整个屏幕显示内容交由队列管理,然后不停的去整屏刷新以实现屏幕滚动。理论上这样的实现比较耗资源,耗费CPU资源去操作SPI外设,耗费内存资源去存储显示数据,所以一直没有去做这件事。今天在查看ST7789数据手册写论文时,偶然发现ST7789手册种:咦?Scroll?滚动?发现新大陆!根据手册中的8.14章节描述,旋转滚动仅仅是垂直滚动的一种模式,由垂

    2022年4月8日
    81

发表回复

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

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