当前位置: 首页 > news >正文

《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar

tabBar是用QT插件实现的一个dll,对于插件的使用可以参考文章:
《QT从基础到进阶·三十三》QT插件开发QtPlugin

源码放在文章末尾

该功能类似侧边工具栏,可以在该标签栏上添加自己开发的界面,实现代码如下:
1、所有功能统一由TabBarPlugin类管理,现在主界面mainWindow插入标签栏tabBar:

 TabBarPlugin* tabBarPlugin = PluginCore::getinstance()->GetPlugin<TabBarPlugin>("TabBarPlugin");if (tabBarPlugin)ui.centralWidget->layout()->addWidget(tabBarPlugin->getWidget());

注意:后面PluginCore::getinstance()->GetPlugin(“TabBarPlugin”);内部先拿到TabBar的dll转为QObject,再把QObject强转为TabBarPlugin对象,这是插件的使用方法,也可以直接new一个TabBarPlugin对象。
在这里插入图片描述

2、现在有四个小工具界面想要放入tabBar标签栏:

 LevelAdjustPlugin* levelAdjustPlugin = PluginCore::getinstance()->GetPlugin<LevelAdjustPlugin>("LevelAdjustPlugin");if (levelAdjustPlugin && tabBarPlugin)tabBarPlugin->addWidget(levelAdjustPlugin->GetWidget(), "LevelAdjust", QIcon());MLMotion2D* tipTiltPlugin = PluginCore::getinstance()->GetPlugin<MLMotion2D>("TipTiltPlugin");if (tipTiltPlugin && tabBarPlugin)tabBarPlugin->addWidget(tipTiltPlugin->GetWidget(), "TipTilt", QIcon());CollimatorPlugin* collPlugin = PluginCore::getinstance()->GetPlugin<CollimatorPlugin>("CollimatorPlugin");if (collPlugin && tabBarPlugin)tabBarPlugin->addWidget(collPlugin->GetWidget(), "Collimator", QIcon());GradienterPlugin* gradPlugin = PluginCore::getinstance()->GetPlugin<GradienterPlugin>("GradienterPlugin");if (gradPlugin && tabBarPlugin)tabBarPlugin->addWidget(gradPlugin->GetWidget(), "Gradienter", QIcon());

四个小工具也是由插件实现,先拿到他们的对象,通过对象指针获取他们的界面,再把每个界面addWidget添加到标签栏中。
在这里插入图片描述

3、现在可以对标签栏上的所有界面进行交互
(1)可以收缩和展开tabBar
在这里插入图片描述

(2)调换tabBar标签栏中所有界面的循序和删除小工具界面
在这里插入图片描述
(3)把tabBar标签栏中的小工具界面拖出来在放回去
在这里插入图片描述

源码下载

在这里插入图片描述

相关文章:

《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar

tabBar是用QT插件实现的一个dll&#xff0c;对于插件的使用可以参考文章&#xff1a; 《QT从基础到进阶三十三》QT插件开发QtPlugin 源码放在文章末尾 该功能类似侧边工具栏&#xff0c;可以在该标签栏上添加自己开发的界面&#xff0c;实现代码如下&#xff1a; 1、所有功能…...

风丘电动汽车热管理方案 为您的汽车研发保驾护航

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施&#xff0c;在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调&#xff0c;而电动汽车的热管理系统在燃油汽车热管理架构的基础之上&#xff0c;又增加了电机电控热…...

每日一练 | 华为认证真题练习Day134

1、开启标准STP协议的交换机可能存在哪些端口状态&#xff1f;&#xff08;多选&#xff09; A. Discarding B. Listening C. Disabled D. Forwarding 2、下列路由协议中优先级最高的是&#xff1f; A. Direct B. RIP C. OSPF D. Static 3、参考如图所示的输出结果&…...

python连接hive报错:TypeError: can‘t concat str to bytes

目录 一、完整报错 二、解决 三、 其他报错 四、impala方式连接hive 或者直接使用 pip install pyhive[hive] 安装。需要先 pip uninstall pyhive。 一、完整报错 Traceback (most recent call last): File "D:/Gitlab/my_world/hive2csv.py", line 18, in <…...

虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火

一、故障现象 一辆2015款奔驰G63AMG车&#xff0c;搭载157发动机&#xff0c;累计行驶里程约为9.4万km。车主反映&#xff0c;该车低速行驶时&#xff0c;发动机偶尔会自动熄火&#xff0c;故障大概1个星期出现1次。 二、故障诊断 接车后路试&#xff0c;故障未能再现。用故障检…...

10 Redis的持久化

Redis支持RDB和AOF两种持久化机制 1、RDB(Redis DataBase) 是对命令的全量快照随着key的数量增大&#xff0c;那么写入磁盘的开销也会越来越大 2、RDB文件的生成是否会阻塞主线程 save: 使用save的方式会阻塞主线程&#xff0c;影响redis的性能 bgsave: 一般情况下不会阻塞…...

【Linux入侵日志排查】

在Linux系统中&#xff0c;不同的服务和应用程序可能会产生不同格式的日志记录。以下是一些常见类型的日志文件及其格式说明&#xff1a; 以下是一些常见的 Linux 日志字段格式说明&#xff0c;以及具体的示例&#xff1a; /var/log/auth.log&#xff1a;此日志文件包含与身份…...

从哪些方面分析Linux内核源码

从这些方面分析Linux内核源码&#xff0c;这里提供一个大致的大纲&#xff1a; 一、Linux内核源码概述 1. 什么是Linux内核&#xff1f; 2. Linux内核的主要功能 3. Linux内核的版本控制 4. Linux内核的组织结构 二、Linux内核编译与配置 1. 获取Linux内核源码 2. 安装…...

C#WPF数据模板应用实例

一、数据模板定义 数据模板是一块定义如何显示绑定的数据对象的XAML标记。 有两种类型的控件支持数据模板: 1、内容控件 通过ContentTemplate属性支持数据模板。内容模板用于显示任何放置在Content属性中的内容。 2、列表控件(继承自ItemsControl类的控件) 通过ItemsTem…...

ansible练习题1

安装并配置ansible 在控制节点上安装并配置Ansible,要求如下: | 安装所需的软件包: 创建静态inventory文件/home/student/ansible/inventory ,要求如下: servera属于dev主机组 serverb属于test和balancers主机组 serverc和serverd属于prod主机组 …...

六大排序详讲(直接插入排序+希尔排序+选择排序+堆排序+冒泡排序+快速排序)

文章目录 排序一、 排序的概念1.排序&#xff1a;2.稳定性&#xff1a;3.内部排序&#xff1a;4.外部排序&#xff1a; 二、插入排序1.直接插入排序2.希尔排序 三、选择排序1.直接选择排序方法一方法二直接插入排序和直接排序的区别 2.堆排序 四、交换排序1.冒泡排序2.快速排序…...

Clickhouse初认识

技术主题-clickhouse 一什么是clickHouse 1&#xff09;本质上就是一款数据库管理系统&#xff0c;能提供海量数据的存储和检索 2&#xff09;基于列存储&#xff0c;数据是按照列进行存储的&#xff08;数据格式一样&#xff0c;方便进行压缩&#xff09; 3&#xff09;具备…...

网络安全项目简介

安全项⽬ 基线检查 更改缺省的账户检查Guest用户是否禁用密码复杂性密码长度账户口令的生存期口令重复次数口令认证失败次数口令到期提示域成员禁用更改机器账户密码限制匿名用户连接共享账户检查远程关机授权是否开启默认文件共享每个用户是否遵循最小权限原则adminstrator账…...

CSDN每日一题学习训练——Python版(N皇后 II、买卖股票的最佳时机 II、编程通过键盘输入每一位运动员)

版本说明 当前版本号[20231120]。 版本修改说明20231120初版 目录 文章目录 版本说明目录N皇后 II题目解题思路代码思路参考代码 买卖股票的最佳时机 II题目解题思路代码思路参考代码 编程通过键盘输入每一位运动员题目解题思路代码思路参考代码 N皇后 II 题目 n 皇后问题…...

semodule工具详解(1)

本文内容参考&#xff1a; semodule(8) - Linux manual page https://linux.die.net/man/8/semodule 1. 介绍 名称 semoudule —— 管理SELinux策略模块。 简介 semodule [options]... MODE [MODES]... 描述 semodule是用于管理SELinux策略模块的工具&#xff0c;包括安装…...

用百度AI大模型给头像换风格

心血来潮想尝试尝试AI小应用&#xff0c;给图片加个风格&#xff08;例如微信头像&#xff09;&#xff0c;于是有了这篇简短的教程 目录 1. 领取免费资源2. 在应用列表创建应用3. 在线API调试4. 效果对比 1. 领取免费资源 网站&#xff1a;百度智能云 百度给提供了很多AIGC的…...

从入门到精通,mac电脑录屏软件使用教程!

“mac电脑怎么录屏呀&#xff0c;刚买了一台mac电脑&#xff0c;用了几个月感觉挺流畅的&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不会操作&#xff0c;想问问大家有没有简单易懂的录屏教程&#xff0c;谢谢啦。” 在日常生活中&#xff0…...

Nginx(反向代理,负载均衡,动静分离)

反向代理 Nginx反向代理是一种将客户端请求转发给后端服务器的技术&#xff0c;即反向代理服务器。在这种架构中&#xff0c;客户端请求首先到达Nginx服务器&#xff0c;然后由Nginx服务器将请求转发给后端服务器&#xff0c;后端服务器响应请求&#xff0c;并将响应传递回Ngi…...

【Spring】SpringBoot的扩展点之ApplicationContextInitializer

简介 其实spring启动步骤中最早可以进行扩展的是实现ApplicationContextInitializer接口。来看看这个接口的注释。 package org.springframework.context;/*** Callback interface for initializing a Spring {link ConfigurableApplicationContext}* prior to being {linkpl…...

哈希表HashTable

散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据键&#xff08;Key&#xff09;而直接访问在内存存储位置的数据结构。 哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素&#xff0c;复杂度O(1) 哈希表本质…...

ARMv8/v9异常处理机制与ESR_EL3寄存器解析

1. ARM异常处理机制概述在ARMv8/v9架构中&#xff0c;异常处理是系统可靠性的基石。当处理器遇到无法继续正常执行的情况时——无论是硬件故障、软件错误还是有意触发的系统调用——都会通过异常机制进行响应。与x86架构的中断描述符表(IDT)不同&#xff0c;ARM采用异常向量表(…...

STATIC框架:向量化约束解码技术解析与应用

1. STATIC框架&#xff1a;重新定义约束解码的技术边界 在生成式推荐系统的实际落地过程中&#xff0c;我们经常面临一个核心矛盾&#xff1a;如何在大规模语言模型&#xff08;LLM&#xff09;的开放生成能力与业务规则的硬性约束之间找到平衡点。传统基于前缀树&#xff08;T…...

CANN/ATVOSS块调度运行接口

BaseBlockSchedule::Run 【免费下载链接】atvoss ATVOSS&#xff08;Ascend C Templates for Vector Operator Subroutines&#xff09;是一套基于Ascend C开发的Vector算子库&#xff0c;致力于为昇腾硬件上的Vector类融合算子提供极简、高效、高性能、高拓展的编程方式。 项…...

基于Electron与AI Agent的桌面伴侣开发:从Shimeji到智能交互

1. 项目概述&#xff1a;当童年梦想遇见现代AI 还记得小时候守在电视机前&#xff0c;看着哆啦A梦从四次元口袋里掏出各种神奇道具&#xff0c;解决大雄所有难题的场景吗&#xff1f;那个蓝色的、圆滚滚的机器人猫&#xff0c;承载了我们无数关于“如果”的幻想。如今&#xff…...

深度定制Linux内核:为特定硬件优化CPU调度与电源管理

1. 项目概述&#xff1a;一个为特定硬件深度优化的内核最近在折腾一些老旧的硬件设备&#xff0c;特别是那些搭载了特定芯片组的平台&#xff0c;总感觉官方的内核驱动支持要么太保守&#xff0c;要么不够“贴心”&#xff0c;性能释放和功耗管理总差那么点意思。如果你也有类似…...

复合工程:构建可组合系统的架构方法论与云原生实践

1. 项目概述与核心价值最近在GitHub上看到一个名为ybbms777/compound-engineering的项目&#xff0c;这个标题乍一看有点抽象&#xff0c;但点进去研究后&#xff0c;发现它触及了现代软件开发中一个非常核心且容易被忽视的领域&#xff1a;复合工程。简单来说&#xff0c;它探…...

AI赋能马术:Gemini3.1Pro打造智能护理知识库

在 2026 年&#xff0c;AI 的应用已经不再局限于写代码、做图文或回答通用问题&#xff0c;而是逐渐进入更细分、更专业的知识管理场景。对于马术教练来说&#xff0c;马匹护理并不是一个单点技能&#xff0c;而是一套需要长期积累的系统知识&#xff0c;包括饲养管理、日常观察…...

LLMCompiler:大语言模型并行函数调用编译器原理与实践

1. 项目概述&#xff1a;一个为LLM设计的“并行函数调用编译器”如果你正在构建基于大语言模型&#xff08;LLM&#xff09;的智能体应用&#xff0c;并且被工具调用&#xff08;Function Calling&#xff09;的串行延迟和高昂成本所困扰&#xff0c;那么LLMCompiler这个项目值…...

生成式AI重塑智能座舱:从多模态交互到车端部署的工程实践

1. 项目概述&#xff1a;当生成式AI“坐”进驾驶舱最近几年&#xff0c;生成式AI的浪潮席卷了各行各业&#xff0c;从写诗作画的ChatGPT、Midjourney&#xff0c;到能编程的Copilot&#xff0c;大家已经见怪不怪了。但你可能没太留意&#xff0c;这股风其实早就吹进了汽车行业&…...

电脑加密怎么设置?分享五个电脑加密小技巧,新手也能学会

在数字化办公时代&#xff0c;电脑里存储的不仅是文档&#xff0c;更是企业的核心资产。无论是个人隐私保护还是企业防泄密&#xff0c;掌握几种实用的加密方法都至关重要。今天分享五个加密小技巧&#xff0c;简单易懂&#xff0c;即学即用。方法一&#xff1a;利用洞察眼MIT系…...