【QT】设置QTabWidget样式:上、下边线的显示与去除

目录

0.简介

1.环境

2.详细介绍

2.1我的原代码和显示效果

2.2 去掉QTabWidget的边框

2.3 单独留下边线

2.3.1 法一:通过【this->setDocumentMode(true);】设置下边线

2.3.2 通过【QTabWidget::pane】设置下边线

2.4单独设置上边线

2.5 优化界面tab

2.5.1 增加Tab的圆角

2.5.2 增加下边线的样式和颜色

2.5.3 设置Tab点击和不点击的突出效果

2.5.4 全部代码:


0.简介

项目需求,有一个QTabWidget的类,想修改其样式,主要介绍了如何去掉边框;单独留上边线、下边线;主要使用setStyleSheet设置,详见下文

1.环境

windows11  +  vs-code  + qt

2.详细介绍

2.1我的原代码和显示效果

我有一个自定义的类,这个类继承自【QTabWidget】

用setStyleSheet设置样式

    setStyleSheet("QTabBar::tab {\
        min-height:30px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
    }\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
    }");

界面显示的效果如下,可以看到我有两个tab页:管1和管2

但是我的QTabWidget目前的样式有个框,我的目的是删除QTabWidget的框,不美观

2.2 去掉QTabWidget的边框

使用【QTabWidget::pane{top:-1px;border:none;}】

在原有的样式中增加这句样式

    setStyleSheet("QTabBar::tab {\
        min-height:30px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
    }\
    QTabWidget::pane{top:-1px;\
        border:none;}\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
    }");

2.3 单独留下边线

有两种方式显示单独下边线:

①通过【setDocumentMode】设置;

②通过【QTabWidget::pane】设置。

不同的点是,前者不能设置线的样式,后者可以设置线的样式

2.3.1 法一:通过【this->setDocumentMode(true);】设置下边线

setDocumentMode(true)】 设置 QTabWidget 为文档模式,主要改变 QTabWidget 的外观和行为,使其更适合用于文档管理界面。文档模式通常用于显示一组文档,每个文档都可以通过一个标签进行访问。

这种模式下的 QTabWidget 具有以下特征:

  • 标签外观改变:标签将变得更扁平,更类似于浏览器或文本编辑器中的标签。
  • 标签位置:通常标签会被放置在控件的顶部,而不是其他位置(如左侧或右侧)。
  • 交互性改进:文档模式的标签通常更易于操作和管理,提供更直观的文档切换体验。

优点

  • 改进的用户体验:文档模式的标签设计通常更符合用户的期望,特别是在处理多个文档时,例如在代码编辑器或网页浏览器中。
  • 外观一致性:当应用程序需要多文档界面时,文档模式提供了一种标准化的外观,使界面更一致。
  • 简洁的标签样式:标签样式更扁平、更简洁,可以减少视觉干扰,提升用户的注意力集中在内容上。

缺点

  • 灵活性降低:文档模式的设计主要是为了文档管理,如果应用程序的标签用途不同(例如选项卡式的设置面板),文档模式可能不太适合。
  • 自定义难度增加:文档模式的标签外观和行为是固定的,如果需要进行特定的自定义,可能需要更多的工作。
  • 兼容性问题:某些情况下,文档模式可能与应用程序的整体设计风格不匹配,导致视觉上的不协调。
    setStyleSheet("QTabBar::tab {\
        min-height:30px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
    }\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
    }");
    this->setDocumentMode(true);  //通过这行设置下边线

2.3.2 通过【QTabWidget::pane】设置下边线

前提:请设置文档模式为false【this->setDocumentMode(false);】,或者注释这行代码

我增加了一条绿色的线,设置宽度为2px

【QTabWidget::pane{border-top: 2px solid cyan;}】

    setStyleSheet("QTabBar::tab {\
        min-height:40px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
    }\
    QTabWidget::pane{border-top: 2px solid cyan;}\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
    }");
    // this->setDocumentMode(false);

2.4单独设置上边线

使用文档模式 + 【QTabWidget::pane{}】

注意:【QTabWidget::pane{}】这句是不能删除的,即使它的里面没有设置样式,去掉后就变成下边线了。

解释:

  • 当你在样式表中明确声明 QTabWidget::pane{} 时,即使没有添加任何具体样式,它也会覆盖某些默认样式设置。这会导致 QTabWidget 的外观发生变化。在这种情况下,Qt默认的样式(如边框)可能会被去掉或修改。
  • 当 QTabWidget::pane{} 不存在时,Qt将应用默认样式。默认样式通常会为面板添加一个下边线,这就是为什么你在去掉 QTabWidget::pane{} 后看到下边线。

    setStyleSheet("QTabBar::tab {\
        min-height:40px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
    }\
    QTabWidget::pane{}\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
    }");
    this->setDocumentMode(true);

2.5 优化界面tab

为了优化界面,我设置了tab的样式,增加了圆角,设置了下边线的颜色和透明度,设置了点击tab的突出显示,最后的显示和代码如下

前提:请注释文档模式的代码,或设置为false。

2.5.1 增加Tab的圆角

2.5.2 增加下边线的样式和颜色

2.5.3 设置Tab点击和不点击的突出效果

2.5.4 全部代码:

    setStyleSheet("QTabBar::tab {\
        min-height:40px;\
        min-width:100px;\
        font-size:22px;\
        font-family:'Microsoft YaHei';\
        background-color:rgb(225, 229, 232);\
        border-top-left-radius: 4px;\
        border-top-right-radius: 4px;\
    }\
    QTabWidget::pane{border-top: 2px solid rgba(10, 93, 201, 50);}\
    QTabBar::tab:selected{\
        background-color:#0A5DC9;\
        color:#ffffff;\
        padding-bottom: 5px;\
    }\
    QTabBar::tab:!selected{\
        margin-top: 3px;\
    }\

参考:

QTabBar样式设置-CSDN博客

去掉TabWidget标签栏顶部一条白线_qtabwidget tabbar上有横线-CSDN博客

QTabWidget的tab标签下边框怎么去掉-CSDN社区

--END--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/746655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ceil()——向上取整函数

函数原型为: double ceil(double x); 大家可以在这个网站里更清晰的了解ceil - C Reference (cplusplus.com) 下面借助一道例题来帮助大家理解:牛牛的快递_牛客题霸_牛客网 (nowcoder.com) 我们分析题得知,在大于1的情况下,只要…

AI在软件开发中的应用

AI在软件开发中的应用可以帮助开发人员更高效地编写和测试代码,并提高软件的质量和性能。它能够帮助加快软件的部署和维护过程,提供更好的开发体验。 编码辅助 帮助开发人员更快地编写代码。例如,AI可以识别代码中的语法错误,并提…

实时美颜技术解析:视频美颜SDK如何改变直播行业

实时美颜技术的出现,尤其是视频美颜SDK的应用,正逐渐改变着直播行业的生态。 一、实时美颜技术的原理 实时美颜技术利用人工智能和图像处理算法,对视频中的人物面部进行优化和修饰。该技术通常包含以下几个步骤: 1.人脸检测和识…

Linux文件编程详解

Linux文件编程详解 在Ubuntu(Linux)系统下进行文件操作涉及一系列的系统调用,这些调用是基于Unix风格的文件操作API。这些操作包括打开或创建文件、从文件中读取数据、向文件中写入数据、移动文件指针以及关闭文件。以下是这些函数的详细介绍…

std::enable_if和std::is_base_of

std::enable_if,其主要为了完成模板特偏化,有两个参数,第一个为布尔值类型,第二个如果布尔值为true,其为默认空值,如果已经赋值,则为对应的类型。 std::is_base_of,其一共存在两个参数&#xff…

ora-15025 ora-27041问题处理

这个问题先排查 [oracleracdg2-2 ~]$ cd $ORACLE_HOME/bin [oracleracdg2-2 bin]$ ls -ld oracle -rwsr-s--x 1 oracle oinstall 239626641 Jun 25 19:09 oracle 正常的属组是 [gridracdg2-1 ~]$ setasmgidwrap -o /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle […

玩转AI之四个免费热门的AI工具

2023年,可以说称之为人工智能元年,随着 AI 人工智能、机器学习技术的不断发展,各种 AI 算法的应用也越来越广泛,在AI这一领域中,软件、工具和网站如雨后春笋般涌现。下半年,预计会有更多王炸级别的产品问世…

windows10/win11截图快捷键 和 剪贴板历史记录 快捷键

后知后觉的我今天又学了两招: windows10/win11截图快捷键 按 Windows 徽标键‌ Shift S。 选择屏幕截图的区域时,桌面将变暗。 默认情况下,选择“矩形模式”。 可以通过在工具栏中选择以下选项之一来更改截图的形状:“矩形模式”…

线性代数基础概念:行列式

目录 线性代数基础概念:行列式 1. 行列式的定义 1.1 递归定义 1.2 代数余子式定义 1.3 几何定义 2. 行列式的性质 2.1 行列式等于其转置的行列式 2.2 交换两行或两列,行列式变号 2.3 将一行或一列乘以一个数 k,行列式乘以 k 2.4 将…

植物大战僵尸杂交版技巧大全(附下载攻略)

《植物大战僵尸杂交版》为策略游戏爱好者带来了全新的挑战和乐趣。如果你是新手玩家,可能会对游戏中的植物和僵尸感到困惑。以下是一些实用的技巧,帮助你快速掌握游戏并享受其中的乐趣。 技巧一:熟悉基本玩法 游戏的基本玩法与原版相似&…

Android 11.0 修改系统显示大小导航栏消失

Android 11.0 修改系统显示大小导航栏消失 1.显示大小设置为大时,导航栏图标不显示。 设置为大,较大,最大时,导航栏图标不显示。 2.开始怀疑是导航栏被隐藏了,各种折腾无效。 3.发现: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/Edg…

OpenCV cv::Mat到 Eigen 的正确转换——cv2eigen

在进行计算机视觉项目时,我们经常需要处理相机位姿的变换。最近,我在项目中遇到了一个看似简单但实际上颇具挑战性的问题:从 OpenCV 的 cv::Mat 格式转换到 Eigen 库的格式。这个过程中遇到了一些问题,但最终找到了一个稳健的解决…

高考成绩加分,西藏学生推荐使用的《藏文翻译词典》APP,藏文作文高考大纲,初中高中学习内容与考试同步更新!

2024年高考成绩出炉啦!在这个特别的时刻,我想向大家表达最真挚的祝贺。高考不仅是一场考试,更是你多年学习旅程的一次总结。当你的成绩揭晓,无论结果如何,你都应该为自己感到骄傲。 在高原,藏语如同雪山上…

从官方源码精简出第1个FreeRTOS程序

一、下载官方源码 1、打开百度搜索freerots,找到官网:FreeRTOS官网 2、将源码解压到没有中文目录的路径下 二、删减目录 1、删除FreeRTOS-Plus和tools 2、删除FreeRTOS/Demo下除CORTEX_STM32F103_Keil外的所有文件 3、删除FreeRTOS\Source\portable下除RVDS和MemM…

字符串匹配 --- BF算法 KMP算法

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 本篇博客我们将介绍关于字符串匹配的BF算法以及KMP算法,请放心食用~ 🏠 字符串匹配 假设有一个字符串为主串str&#x…

算法07 深度优先搜索及相关问题详解

深搜与广搜是搜索算法中最常用的两种算法,通过深度优先搜索解决问题还会用到回溯和剪枝,让我们一起进入本章,了解深搜的基本概念和模板,并学会解决一些常见问题。 目录 问题导入 走迷宫问题 如何走? 问题建模 如何…

(2024,频域 LoRA,DFT,DCT,自适应门控,基于适配器组合的图像编辑)FouRA:傅里叶 LoRA

FouRA: Fourier Low Rank Adaptation 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 相关工作 3. 提出的方法 3.1 低秩适应的公式 3.2 频域中的低秩适应 3.3 频率变换 …

【个人博客搭建】(26)发布后端webapi项目

1、选择启动的webapi,右击发布 2、选择左下角的“显示所有设置” 在上一页按钮那边是发布文件夹的目录 地址, 现在界面的就是配置的信息, 配置:Debug、Release 目标框架:我们用的net8.0,就是他&#xff…

2.移植freertos到stm32f103c8t6

目录 1.步骤 2.freertos配置时常见的选项卡意思 1.步骤 2.freertos配置时常见的选项卡意思

Michael.W基于Foundry精读Openzeppelin第60期——Clones.sol

Michael.W基于Foundry精读Openzeppelin第60期——Clones.sol 0. 版本0.1 Clones.sol 1. 目标合约2. 代码精读2.1 clone(address implementation) internal2.2 cloneDeterministic(address implementation, bytes32 salt)2.3 predictDeterministicAddress(address implementatio…