当前位置: 首页 > 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标签栏中的小工具界面拖出来在放回去
在这里插入图片描述

源码下载

在这里插入图片描述
http://www.lryc.cn/news/237899.html

相关文章:

  • 风丘电动汽车热管理方案 为您的汽车研发保驾护航
  • 每日一练 | 华为认证真题练习Day134
  • python连接hive报错:TypeError: can‘t concat str to bytes
  • 虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火
  • 10 Redis的持久化
  • 【Linux入侵日志排查】
  • 从哪些方面分析Linux内核源码
  • C#WPF数据模板应用实例
  • ansible练习题1
  • 六大排序详讲(直接插入排序+希尔排序+选择排序+堆排序+冒泡排序+快速排序)
  • Clickhouse初认识
  • 网络安全项目简介
  • CSDN每日一题学习训练——Python版(N皇后 II、买卖股票的最佳时机 II、编程通过键盘输入每一位运动员)
  • semodule工具详解(1)
  • 用百度AI大模型给头像换风格
  • 从入门到精通,mac电脑录屏软件使用教程!
  • Nginx(反向代理,负载均衡,动静分离)
  • 【Spring】SpringBoot的扩展点之ApplicationContextInitializer
  • 哈希表HashTable
  • 【软件测试】一位优秀测试工程师具备哪些知识和经验?
  • MongoDB相关基础操作(库、集合、文档)
  • 进程和线程( Process and Thread)
  • linux apache安装及虚拟主机配置
  • 基于Spring Boot 框架的试卷自动生成系统的设计与实现
  • 开发《猫咪攻略》小游戏的意义
  • hadoop、hive、DBeaver的环境搭建及使用
  • Linux上通过SSL/TLS和start tls连接到LDAP服务器(附C++代码实现认证流程)
  • HarmonyOS ArkTS List组件和Grid组件的使用(五)
  • 考研思想政治理论大纲
  • 日期格式转化成星期几部署到linux显示英文