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

news2024/12/23 17:14:50

目录

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--

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESRW-102打滑开关 JOSEF约瑟 调试简单,安装灵活

ESRW-102打滑开关是一种用于监测设备转速或带速的传感器,尤其适用于皮带输送机等转动设备,用于检测和处理打滑、断裂等机械故障。以下是关于ESRW-102打滑开关的详细介绍: 用途 主要用于皮带输送机、提升机、螺旋输送机等转动设备&#xff0…

Charles 忽略IP授权 Allow 弹窗

当有新的设备连接到 Charles 时,会出现如下弹框确认是否允许,如果希望允许所有客户端连接不再有提示,可以通过添加模糊IP规则来实现。 配置方法:Proxy > Access Control Settings 中添加 0.0.0.0/0 和 ::/0 即可,…

DLS策略洞察:如何应对AI数据中心网络交换机市场的爆发式增长?

摘要: 随着AI技术的发展和应用,AI数据中心对网络交换机的需求日益增加。摩根士丹利预计,2023-2026年间,AI数据中心网络交换机的收入复合年增长率(CAGR)将达到55%。本文将详细分析AI数据中心网络交换机市场…

高德地图开发隐藏logo和标志文字

vue开发隐藏引用高德地图的logo和文字方法 //scss <style langscss scoped>:deep(.amap-logo), :deep(.amap-copyright) {display: none !important; }</style>

环路滤波器

块效应产生的原因 块效应指视频边界不连续的变化,我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact)。 造成这种现象的主要原因有两点: DCT量化误差导致运动补偿导致…

C# Winform中制作精美控件(2)

仓库温度监控系统重有个控件&#xff0c;就是温度监控&#xff0c;还是比较精美的&#xff0c;那么我们来看看制作的要点有哪些。 前面我们讨论过布局和圆角按钮。这节主要关注温度计控件 1. 布局&#xff1a; 两个Panel将界面分位上下两个部分&#xff0c;Dock.Top Dock.Fil…

Web3 ETF 的软件开发框架

Web3 ETF 的软件开发框架主要包含以下几个方面&#xff0c;需要说明的是&#xff0c;Web3 ETF 仍处于早期发展阶段&#xff0c;相关技术和标准尚未成熟。在开发 Web3 ETF 时&#xff0c;需要谨慎评估风险&#xff0c;并做好安全防范措施。北京木奇移动技术有限公司&#xff0c;…

【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间&#xff1a;2023-12-16 1 介绍 年份&#xff1a;2017 作者&#xff1a;Ronald Kemker&#xff0c;美国太空部队&#xff1b;Christopher Kanan&#xff0c;罗切斯特大学 期刊&#xff1a; arXiv preprint 引用量&#xff1a;520 Kemker R, Kanan C. Fearnet: Brain-…

手机恢复已删除的照片,2个实用方法,有效避免数据丢失

手机相册&#xff0c;简直就是我们生活中的宝藏库&#xff0c;里面储存着我们拍摄的每一张照片。但是&#xff0c;有时候我们会因为手残或者意外情况&#xff0c;不小心把手机照片给删了&#xff0c;这简直是让我们的生活留下了无法弥补的遗憾啊&#xff01; 为了帮助大家避免…

如何封装自动化测试框架?

封装自动化测试框架&#xff0c;测试人员不用关注框架的底层实现&#xff0c;根据指定的规则进行测试用例的创建、执行即可&#xff0c;这样就降低了自动化测试门槛&#xff0c;能解放出更多的人力去做更深入的测试工作。 本篇文章就来介绍下&#xff0c;如何封装自动化测试框…

“天下第一痛”到底有多疼?三叉神经痛有哪些症状

三叉神经是负责脸部、口腔、鼻腔和舌前的感觉和咀嚼肌的运动的颅脑最粗大的神经。当三叉神经被干扰后&#xff0c;它所支配的面部区域内就会出现一种反复发作的短暂性剧烈疼痛&#xff0c;每次痛持续数秒至数十秒&#xff0c;可严重影响患者生活质量。 三叉神经痛的主要特征是在…

云渲染平台千千万,哪个平台更划算!?

渲染100 以高性价比著称&#xff0c;是预算有限的小伙伴首选。 15分钟0.2,60分钟内0.8;注册填邀请码【7788】可领30元礼包和免费渲染券) 提供了多种机器配置选择(可以自行匹配环境)最高256G大内存机器&#xff0c;满足不同用户需求。支持3dmax&#xff0c;cr&#xff0c;vr所…

他们说:优秀的程序员应该对代码保持追求

在当今技术飞速发展的时代&#xff0c;快速开发成为了企业竞争的关键。为了满足市场需求&#xff0c;降低开发成本&#xff0c;越来越多的企业开始关注低代码开发平台。 传统的应用开发流程通常需要大量的人力资源和时间投入&#xff0c;使得企业在产品迭代的速度上受限。而低…

筑梦未来:高考后,专业与学校的天秤两端

前言 2024 年高考落幕&#xff0c;几人欢喜几人愁&#xff0c;作为一个过来人&#xff0c;希望每一个努力的悻悻学子都能得偿所愿&#xff0c;不负年华&#xff0c;报的心仪的志愿。 接下来我将从三个方向进行一些分析建议&#xff0c;在专业与大学排名间做出适当的权衡。 专…

AI办公自动化:多音频轨电影视频抽取出英语音频

很多电影视频是有中、英、粤语等多个音频轨的&#xff0c;如果直接转换成音频&#xff0c;很有可能不是自己想要的那种语音。 可以先查看音频流信息&#xff0c;确定属于哪个音频轨&#xff1a; Reading video file: E:\1-7\比得兔1.mp4 输出音频流信息 Available audio str…

Flask无法Debug

问题描述 Flask Debug的时候&#xff0c;可能会无法进入断点。我使用的是pycharm CE版本。 解决方案 确保pycharm安装路径不带空格。&#xff08;带空格路径导致debug程序启动报错&#xff09;Gevent compatible&#xff0c;这个东西老的pycharm版本必须勾选它&#xff0c;新…

郑州大学人工智能简答

第一章 1. 什么是人工智能&#xff1f; 人工智能又称机器智能&#xff0c;主要研究人工的方法和技术开发智能机器或智能系统&#xff0c;以模仿、延伸和扩展人的智能、生物智能、自然智能&#xff0c;实现机器的智能行为。 人工智能的定义分四类&#xff1a; &#xff08;1&am…

如何用Vue3构建一个功能齐全的投资组合管理仪表盘?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Vue 构建一个功能齐全的投资组合仪表板 应用场景介绍 本代码展示了一个使用 Vue 构建的投资组合仪表板&#xff0c;它允许用户查看和管理他们的投资组合。仪表板提供了以下功能&#xff1a; 实时显示投…

EWM学习之旅-1-EWM100

系统学习一个业务模块已经变得越来越重要&#xff0c;开始吧&#xff0c;EWM&#xff01; EWM的Learning Journey中包括7本 ebook,100/110/115/120/125/130/140&#xff0c;一本一本的啃吧&#xff0c;相信很多内容是重复的。 EWM100很适合初学者&#xff0c;了解概念术语&…

健身房管理系统

摘 要 随着人们健康意识的增强&#xff0c;健身房作为一种提供健身服务的场所&#xff0c;受到越来越多人的关注和喜爱。然而&#xff0c;传统的健身房管理方式存在诸多问题&#xff0c;如信息管理不便捷、会员管理不规范等。为了解决这些问题&#xff0c;本文设计并实现了一款…