《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

智能推荐

spring bootstrap table 表格创建_springboot table编辑-程序员宅基地

文章浏览阅读827次。前台表格插件多种样,以前用过datatable以及gridtable,这次想要尝试一个新的,就选择了bootstrap table,主要是界面定了想要用bootstrap设计界面,所以就选择了这个,bootstrap table 官网为http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/,里面对表格各种问题都有详细描述。好了,不多..._springboot table编辑

福建师范大学计算机科学与技术学院,福建师范大学计算机科学与技术学院.docx...-程序员宅基地

文章浏览阅读195次。福建师范大学计算机科学与技术学院1、-只能在总账模块里可以制作财务凭证。()--A. √ B. ×  答案:×2、-系统初始化工作,可为U8系统内模块提供基础应用的公共档案。()--A. √ B. ×  答案:√3、-新建的末级科目辅助项类型必须和上级科目一致。()--A. √ B. ×  答案:×4、-项目大类定义中项目栏目是固定的,不能新增栏目。()--A. √ B. ×  答案:×5、-凭证...

什么是模块化及其优点是什么-程序员宅基地

文章浏览阅读2.2k次。模块化是一种将系统分离成独立功能部分的方法,严格定义模块接口、模块间具有透明性。javascript中的模块在一些C、PHP、java中比较常见:c中使用include 包含.h文件;php中使用require_once包含.php文件java使用import导入包优点:可维护性1.灵活架构,焦点分离2.方便模块间组合、分解3.方便单个模块功能调试、升级4.多人协作互不干扰..._模块化编程的优点

pyqt5 QMainWindow 模板 例子_qtgui设计打印模板-程序员宅基地

文章浏览阅读357次。11import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() ..._qtgui设计打印模板

MATLAB算法实战应用案例精讲-【图像处理】缺陷检测(补充篇)-程序员宅基地

文章浏览阅读116次。缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中。虽然当前深度学习技术十分火爆,但它占AOI落地项目中的比例仅约10%。传统算法依然无法被完全取代,它有着计算复杂度低、调试成本低等优点。

家政服务小程序开发还是家政服务APP开发?-程序员宅基地

文章浏览阅读44次。现在,随着智能手机和移动互联网的普及,越来越多的企业开始关注移动应用的开发。对于家政服务行业来说,开发一个移动应用程序似乎是个不错的主意。但是,是选择开发家政服务小程序还是家政服务APP呢?在现代社会,人们的生活节奏越来越快,时间越来越宝贵。为了更好地满足人们的服务需求,越来越多的家政服务企业开始关注移动应用的开发。无论是家政服务小程序还是家政服务APP,都可以为用户提供更加便捷的服务体验。但是,这两种应用程序各有优缺点,家政服务企业应该如何选择最适合自己的移动应用程序呢?

随便推点

华为杯数学建模比赛经验分享第二期——编程手篇_数学建模比赛中编程手人物-程序员宅基地

文章浏览阅读961次。华为杯数学建模比赛经验分享第二期——编程手篇_数学建模比赛中编程手人物

与simpack不同,matlab建立轨道车辆(垂向)振动输入相应激励分析振动等。垂向_matlab的重载列车纵向动力学模型-程序员宅基地

文章浏览阅读258次,点赞5次,收藏5次。在振动输入分析的基础上,我们需要进一步分析轨道车辆的垂向振动相应。通过对车辆模型和振动输入信号进行数值计算,我们可以得到轨道车辆在不同工况下的垂向振动响应,为后续的工程设计和优化提供参考。最后,通过MATLAB的仿真计算,我们得到了该高速列车在不同运行速度下的垂向振动相应,验证了模型的准确性和可靠性。本文将详细讲解MATLAB在建立轨道车辆模型、振动输入分析和相应激励分析等方面的技术原理和实施方法,并通过实例展示MATLAB在轨道车辆垂向振动研究中的应用。本文介绍了MATLAB在轨道车辆垂向振。_matlab的重载列车纵向动力学模型

Pandas数据透视表--pivot_table_pandas透视表(pivot_table)详解-程序员宅基地

文章浏览阅读1.6k次,点赞43次,收藏28次。pandas有两个pivot_table函数,pandas.pivot_table和pandas.DataFrame.pivot_table,pandas.pivot_table 比 pandas.DataFrame.pivot_table 多了一个参数data,data就是一个dataframe,实际上这两个函数相同。pivot_table参数中最重要的四个参数 values,index,columns,aggfunc,下面通过案例介绍pivot_tabe的使用。_pandas透视表(pivot_table)详解

hdoj 1009_hdoj1009-程序员宅基地

文章浏览阅读236次。//简单贪心#include#include#includeusing namespace std;typedef struct{ int j, f; double rate;}Trade;bool cmp(Trade &a, Trade &b){ return a.rate > b.rate;}Trade fat[10_hdoj1009

java杨辉三角金字塔型_java金字塔形杨辉三角形-程序员宅基地

文章浏览阅读588次。太久没有回过头看数据结构和算法,今天突然重新做一些算法题惊叹有点糊涂了。金字塔的杨辉三角怎么网上都是*字符?经过编写测试,我把我简单写的po出来给大家看看。可能有点笨拙,因为没用到方法调用和递归,当然这样更容易新手秒懂。public claa TestYHSJ{ public static void main(String[] args){ int[][] array=new int[10][10];//array作为一个普通数组必须要先定义长度,而arraylist就不需要 _java金字塔形杨辉三角形