首页 > 其他分享 >Qt插件开发总结5--主界面嵌入插件UI

Qt插件开发总结5--主界面嵌入插件UI

时间:2023-03-05 10:03:15浏览次数:69  
标签:插件 嵌入 界面 Qt -- UI action 键值


文章目录

  • ​​一、前言​​
  • ​​二、效果展示​​
  • ​​三、嵌入插件UI​​
  • ​​1、插件接口文件添加UI指针​​
  • ​​2、插件子项目工程建立UI类​​
  • ​​3、插件类中创建UI类、使UI指针指向创建的UI类​​
  • ​​4、插件元信息中添加widget键值对,指示插件UI嵌入主界面中的位置​​
  • ​​5、主界面中预留接入点tabWidget​​
  • ​​6、插件管理器中元数据处理函数中,如果存在widget键值对,则发送信号到主界面MainWindow中​​
  • ​​7、在MainWindow的界面嵌入槽函数中将插件中的widget嵌入到指定的接入点​​

一、前言

通过上篇博客:​​Qt插件开发总结4–主界面添加插件菜单​​,已经介绍了如何将插件Action注入到主框架MainWindows中。

其实,插件式程序的整体流程如下图所示:

Qt插件开发总结5--主界面嵌入插件UI_qt


我们再来回顾一下​​Qt插件开发总结4–主界面添加插件菜单​​的整体过程:

  • 主框架加载自身的配置(初始化);
  • 插件元数据中新增action键值对;
  • 插件类中存储action名称列表和action槽函数列表;
  • 主框架扫描插件、加载插件、读取插件元数据;
  • 当发现元数据中有action键值对时,将(插件-actionName)键值对存入插件管理器的映射表中,将action列表以信号(SIGNAL)的形式发出,MainWindow中的(SLOT)接收;
  • 在MainWindow的槽函数中,遍历action列表,创建QAction,加入MainWindow预留的menuBar中,所有插件QAction统一绑定到同一个槽函数;
  • 在插件QAction槽函数中,通过信号发送者获取QAction指针,然后获取该QAction的文本;
  • 使用该文本去插件管理器的映射表中匹配到该QAction对应的插件;
  • 然后遍历插件内部的action名称列表,定位下标;
  • 因为action槽函数列表下标和action名称列表下标对应,所以直接通过该下标去访问插件内部的action槽函数列表对应的指针;
  • 这样就实现了点击MainWindow中的菜单项,调用了插件中的槽函数;

二、效果展示

Qt插件开发总结5--主界面嵌入插件UI_开发语言_02


Qt插件开发总结5--主界面嵌入插件UI_ui_03


三、嵌入插件UI

基本的思想就是:1、在插件元数据中定义插件UI嵌入到哪里;2、通过插件中的UI指针进行嵌入

1、插件接口文件添加UI指针

Qt插件开发总结5--主界面嵌入插件UI_键值对_04

2、插件子项目工程建立UI类

Qt插件开发总结5--主界面嵌入插件UI_ui_05

3、插件类中创建UI类、使UI指针指向创建的UI类

Qt插件开发总结5--主界面嵌入插件UI_键值对_06


Qt插件开发总结5--主界面嵌入插件UI_开发语言_07

4、插件元信息中添加widget键值对,指示插件UI嵌入主界面中的位置

Qt插件开发总结5--主界面嵌入插件UI_开发语言_08

5、主界面中预留接入点tabWidget

Qt插件开发总结5--主界面嵌入插件UI_键值对_09

6、插件管理器中元数据处理函数中,如果存在widget键值对,则发送信号到主界面MainWindow中

Qt插件开发总结5--主界面嵌入插件UI_开发语言_10


Qt插件开发总结5--主界面嵌入插件UI_键值对_11

7、在MainWindow的界面嵌入槽函数中将插件中的widget嵌入到指定的接入点

Qt插件开发总结5--主界面嵌入插件UI_ui_12


标签:插件,嵌入,界面,Qt,--,UI,action,键值
From: https://blog.51cto.com/wangjichuan/6101113

相关文章

  • 高效自动化工具之在线json
    在开发过程中,遇到很多问题,其中特别棘手的一个问题,就是一些批量工作,该类工作非常重要,但是又没有技术含量。比如:批量给一个变量加上前缀;批量找出xml里面的数字;根据数组,批量生......
  • zookeeper简单搭建(及代码)
    1、安装zookeeperzookeeper安装环境为linux,下载的版本为:​​​http://www.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz​​​zookeeper的安装基......
  • java使用hibernate输出mysql数据库代码(个人笔记)
    packagecom.seo.worker.quartz;importjava.util.List;importorg.apache.log4j.Logger;importcom.seo.bean.Proxy;importcom.seo.common.dao.impl.BaseDAO;publicclass......
  • linux下tomcat删除文件命令集合
    cd/usr/local/tomcat/bin./shutdown.shcd../cdwebappsrm-rfROOTrm-rfROOT.war首先进入到tomcat的bin目录下,然后关闭tomcat,并且返回目录删除文件和war文件。cd/usr/l......
  • java中的static对象
    /****/packagecom.test.mysql;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.Confi......
  • flex计算器
    <?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><![CDATA[//相加函数internal......
  • 关于hibernate执行sql语句后,进程不关闭的问题
    写了一个简单的测试程序,就是java查询数据库的,后面发现了数据库查询结束后,进程一直不会结束,在调试的时候,发现生成了一个线程,是这个线程不关闭。/****/packagecom.test.my......
  • 开发心得
    在java中,如果导入一个现有工程,现有工程没有问题,但是导入后就发现大量的叉叉,那么很有可能就是编码集的问题。解决方案:右键工程-Properties-Resoure选择UTF-8。就OK了!......
  • snmp4j获取mib信息的实例(测试成功)
    使用java采用SNMP协议来获取设备上的MIB信息,测试例子采用的是本机作为测试,并且系统是win7而且启用了SNMP协议。在win7上开启SNMP协议的教程如链接所示:​​http://blog.china......
  • struts2中MethodFilterInterceptor类的用法
    这个拦截器用于拦截部分函数。拦截器类packagecom.test.interceptor;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensymphony.xwork2.interceptor.Meth......