《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar_qt侧面工具栏-程序员宅基地

技术标签: c++  qt  c语言  ui  QT从基础到进阶  开发语言  

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

源码下载

在这里插入图片描述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cs1395293598/article/details/134511164

智能推荐

vue项目打包发版后路径访问页面空白_前端vue 中用env脚本打包之后访问不到页面-程序员宅基地

文章浏览阅读743次。从这里可以看到,问题出在访问的路径不正确才导致的页面空白,对于这种问题该怎么处理呢?找到文件vue.config.js在此处配置publicPath publicPath: process.env.VUE_APP_BUILD_MODE === 'devops' ? process.env.VUE_APP_BASE_URL : process.env.VUE_APP_BUILD_MODE === 'poc' // 生产环境 ? '/文件名/'._前端vue 中用env脚本打包之后访问不到页面

PCB设计中注意事项_pcb未设置原点影响制板吗-程序员宅基地

文章浏览阅读1.7k次。(1)ERC报告管脚没有接入信号: a、创建封装时给管脚定义了I/O属性; b、创建元件或放置元件时修改了不一致的grid属性,管脚与线没有连上; c、创建元件时pin方向反向,必须非pin name端连线。 d、而最常见的原因,是没有建立工程文件,这是初学者最容易犯的错误。(2)元件跑到图纸界外:没有在元件库图表纸中心创建元件。(3)创建的工程文件网络表只能部分调入PCB:生成netlist时没有选择为..._pcb未设置原点影响制板吗

Pandas之透视表pivot_table_pandas pivot_table-程序员宅基地

文章浏览阅读1.3k次。Pandas之透视表pivot_table1. 什么是pivot_table2. 如何操作pivot_table2.1 加载数据2.2 index参数2.3 values参数2.4 columns参数2.5 aggfunc参数2.6 查询3. 总结1. 什么是pivot_table透视表是一种可以对数据动态排布并且分类汇总的表格格式 pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=_pandas pivot_table

TV盒子常用的影视APP和直播软件分享合集_tv盒子软件合集-程序员宅基地

文章浏览阅读1k次,点赞6次,收藏10次。最近自己也在倒腾机顶盒,少不了直播、影视APP,当然只会收集无广告和无会员的版本,文章介绍部分APP,链接里面我会放目前收集的合集,一直会更新。_tv盒子软件合集

java毕业设计超市管理系统Mybatis+系统+数据库+调试部署_mybatis超市管理系统-程序员宅基地

文章浏览阅读127次。java毕业设计超市管理系统Mybatis+系统+数据库+调试部署。前端技术:Layui、HTML、CSS、JS、JQuery等技术。springboot基于springboot食品销售网站。springboot足球青训俱乐部管理后台系统。springboot研究生实验室综合管理系统。springboot基于OO模式的短租平台。springboot酒店物联网平台系统。_mybatis超市管理系统

排序算法1 -- 拓扑排序_拓扑排序核心算法-程序员宅基地

文章浏览阅读106次。基本的拓扑排序算法。_拓扑排序核心算法

随便推点

什么是DNN,Dotnetnuke介绍和功能简介_dotnetnuke (dnn)-程序员宅基地

文章浏览阅读4.3k次。1. What is DNN? DNN是DotNetNuke(DotNet)的简写。它是在IBUYSPY(IBUYSPY是微软用来推广ASP.NET而推出的范例程序)的基础上发展起来的,是一个免费的、开放的源代码框架, 是一个可扩展的内容管理系统(CMS)。可广泛应用于创建与维护专业的Web应用程序,如商务网站、企业内网(Intranet)、外网网站以及在线内容发布网站。_dotnetnuke (dnn)

ubuntu16.04中python版本切换失败_ubuntu切换 python 没有生效-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏4次。1.我之前创建博客说了Ubuntu中自带python2.7和python3.5可以自行切换。详情请查看下面链接:https://mp.csdn.net/postedit/797423622.但是今天我朋友也想进行python自行切换。我过去帮忙却是发现不可以。使用命令update-alternatives --list python失败列表中只会显示python2.7 没有python3.5怎么回..._ubuntu切换 python 没有生效

kettle 持续运行时导致的内存溢出_kettle内存一直上涨-程序员宅基地

文章浏览阅读8.5k次,点赞3次,收藏4次。java调用 kettle 长时间运行时候,随着时间的增长,占用内存一直上升,GC无法回收的内存越来越高,导致内存溢出。 请查看你的kettle-core.jar 的版本,如果是4.2一下的,请升级到4.4即可 网上找这个问题找了好久找不到,后来翻墙才看到这个问题,写出来分享下 ..._kettle内存一直上涨

uniapp 微信小程序实现走势图生成图片分享_如何做一个走势的小程序-程序员宅基地

文章浏览阅读1.4k次。项目场景:提示:当前页面分享时 把走势图生成一张图片 并且生成图文分享分享出去:效果图:走势图部分:提示:这部分是走势图部分的代码html:<view class="qiun-charts" > <canvas canvas-id="qykccanvasMixid" id="qykccanvasMixid" class="charts" @error="error" @touchstart="touchMi..._如何做一个走势的小程序

微信小程序界面设计——自定义一个好看的头图_微信小程序自定义头部图片-程序员宅基地

文章浏览阅读1.3k次。先看效果图源码<view style="overflow: hidden;"> <image src='http://static.iswenzi.com/image/headImg.jpg' mode='widthFix' style='width:100%; display: block; filter: blur(2rpx); transform: scale(1.2);'></image></view><view clas_微信小程序自定义头部图片

普林斯顿大学计算机科学排名,普林斯顿大学研究生计算机系统专业排名-程序员宅基地

文章浏览阅读170次。原标题:普林斯顿大学研究生计算机系统专业排名 普林斯顿地处纽约和费城之间,是一座别具特色的乡村都市,小城位于新泽西州西南的特拉华平原,面积约为7平方公里,东濒卡内基湖,西临特拉华河。普林斯顿的景色幽雅,四周绿树成荫、绿草丛丛,清澈的河水环绕着小城静静流淌;普林斯顿人口约为3万,绝大部分市民生活富裕;小城交通方便,距离纽约和费城只需大概1小时车程,加上小城恬静而又安详的生活,浓浓的文化氛围笼罩下的贵..._普林斯顿大学计算机科学

推荐文章

热门文章

相关标签