前一章已经实现了主程序调用加载插件功能,这一章描述主程序和插件间通信功能

说道Qt的通信必须要了解信号和槽的机制原理,这里不做论述,不清楚的同学去看看信号和槽机制

不废话直接上步骤,在上一章的基础下进行修改

第一步:在插件中定义一个接收槽

#include "mainwidget.h"
#include "ui_mainwidget.h"
#include "qtimer.h"
#include "qdatetime.h"
mainwidget::mainwidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::mainwidget)
{
ui->setupUi(this);
timer = new QTimer(this);
//新建定时器
connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));
//关联定时器计满信号和相应的槽函数
timer->start(1000);
} mainwidget::~mainwidget()
{
delete ui;
}
void mainwidget::timerUpDate()
{
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显示格式
QString strr= strr.fromLocal8Bit("当前时间:")+str;//调用中文显示
ui->label->setText(strr);
} void mainwidget::time_start()
{
timer->start();
ui->label->setText("start");
}
void mainwidget::time_stop()
{
timer->stop();
ui->label->setText("stop");
}

第二步 生成插件

这一步和上一章内容不变,替换要实现的插件的内容即可

点击运行生成插件,找到插件testpluginplugin.dll

复制粘贴到主程序的程序运行目录下

第三步 主程序加载插件并设置信号槽

    connect(ui->action,SIGNAL(triggered()), testwidget,SLOT(time_start()));
connect(ui->action_2,SIGNAL(triggered()),testwidget,SLOT(time_stop()));

效果图:

1)加载插件成功后默认时间是不断刷新

2)点击停止后时间显示stop

3)点击开始,时间继续刷新

这里就完成了主界面操作插件的功能

源码下载http://download.csdn.net/detail/huangyuancao/6654197

Qt一步一步实现插件通信(附源码)的更多相关文章

  1. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  2. Android Small插件化框架源码分析

    Android Small插件化框架源码分析 目录 概述 Small如何使用 插件加载流程 待改进的地方 一.概述 Small是一个写得非常简洁的插件化框架,工程源码位置:https://github ...

  3. 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)

    在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...

  4. jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)

    上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...

  5. 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

    [转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...

  6. C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)

    前段时间,有几个研究ESFramework通信框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关 ...

  7. Unity时钟定时器插件——Vision Timer源码分析之二

      Unity时钟定时器插件——Vision Timer源码分析之二 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面的已经介绍了vp_T ...

  8. 微服务8:通信之RPC实践篇(附源码)

    ★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...

  9. Qt一步一步实现插件调用(附源码)

    最近手里几个项目都采用插件的方式进行开发工作,这里记录一下实现方法,给需要的同学一个参考, 在linux系统和window系统都能成功编译通过,不废话直接步骤 第一步:建立插件原型 新建一个Qt项目, ...

随机推荐

  1. window7安装python的xgboost库方法

    window7安装python的xgboost库方法 1.下载xgboost-master.zip文件,而不是xgboost-0.4a30.tar.gz,xgboost-0.4a30.tar.gz是更 ...

  2. 【RFT】【环境配置】Mac

    参考地址:http://blog.csdn.net/u010044052/article/details/70858015?utm_source=itdadao&utm_medium=refe ...

  3. 删除node_modules文件

    删除node_modules文件夹报错:路径太长,无法删除. npm install rimraf -g rimraf node_modules

  4. Qt5_选择文件对话框

    1. 类似如下代码: QString fileName = QFileDialog::getOpenFileName( this, tr("Open File"), NULL,// ...

  5. NativeWindow_02_DialogBoxParam_VC6

    PS: 代码参考于<<Windows环境下32位汇编语言程序设计.chm>>,第5章,"5.4 对 话 框(2)" . ZC: 与CreateWindow( ...

  6. OpenModelica中simulate的用法

    先把官网上的说明文档放上来: simulate simulates a modelica model by generating c code, build it and run the simula ...

  7. Bootstrap 4正式发布还有意义吗?

    历经三年开发,前端框架Bootstrap 4正式发布了.然而今天的Web世界已经和当初Mark Otto发布Bootstrap时的情况大为不同,一些开发者由此质疑它的更新是否还有意义. V4版本的主要 ...

  8. 你真的了解restful api吗?

    前言 在以前,一个网站的完成总是“all in one”,页面,数据,渲染全部在服务端完成,这样做的最大的弊端是后期维护,扩展极其痛苦,开发人员必须同时具备前后端知识.于是慢慢的后来兴起了前后端分离的 ...

  9. 学习笔记27—python中numpy.ravel() 和 flatten()函数

    简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...

  10. Unity--- 资源路径问题

    使用 System.IO.Path 这个API得到的路径,其实也是以"\"分隔路径的. 我们在windows下打开资源管理器,某个目录或文件的路径为:E:\uniuProject5 ...