Qt插件系统】的更多相关文章

说明 近期入职新公司,新公司的项目用到了Qt的插件系统,花时间了解了一下,还以为Qt的插件系统有多么高级呢,原来归根到底还是 dll 的动态调用时获取其中的类那一招啊,原理和之前的文章<DLL的动态加载> 的里使用 使用dll中的类 描述的方法如出一辙,只是Qt利用了其库的优势. 动态加载dll获取类 在 <DLL的动态加载> 文章说已经说明,dll只可以导出函数,不可以导出指针,但是为了能得到dll中的类,可以导出一个接口,使用接口获取对象指针.但是在dll的调用一方,却无法识别…
"使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPluginFramework来构建总是未尽其意,描写叙述的太少未免词不达意.描写叙述的太多又显得太啰嗦. 有些看过之前写的[大话QT之四]ctkPlugin插件系统实现项目插件式开发这篇文章的朋友也想了解一下究竟假设从零開始架构一个项目. 在写这篇文章的时候又回头总结了下我之前觉得已经懂了的东西,发现还是好多东西没有…
采用ctkPluginFramework作为一个插件系统开发框架确实有很多优点. 有些车站最近收到的一封信,每个人都想用ctkPluginFramework但我不知道如何建立,本教程对谈ctkPluginFramework插件系统在Windows下的编译过程. 准备条件: 1. 安装Git,我们通过它来下载CTK的源代码. 2. 安装CMake.我们用它来生成vs下的sln解决方式文件. 相关网站: 1. CTK的官网:http://www.commontk.org/index.php/Main…
插件式开发体会: 自开始写[大话QT]系列就开始接触渲染客户端的开发,说是开发不如更多的说是维护以及重构,在接手这块的东西之前自己还有点犹豫,因为之前我一直认为客户端嘛,没什么技术含量,总是想做比较有挑战性的,为了这周总还专门找我谈了谈,算是“安抚”民心吧.正式谈话过后,我才决定接手渲染客户端的开发. 渲染客户端的所有构成均是采用开源框架拼凑起来的整体,细分它的组成大致包含以下开源模块,简单描述: 1> CTKPlugin插件系统框架.负责整个项目的架构,决定了项目采用插件形式开发维护. 2>…
应用需求: 提供皮肤切换选项,在不重启应用程序的情况下实现皮肤的动态切换. 理论基础: 1) 图片资源是如何被利用的 这里先简要说明一下实现原理,皮肤的动态切换其关键在于图片资源的加载方式.QT中每个应用程序启动后都会维护属于自己的资源子库,所有的图片以及UI资源都实现编译到rcc文件中,而rcc文件是整合了所有资源的二进制文件,这种方式属于动态加载. 图片是一种资源,在QT中,对于资源的使用有以下几点: 1>  一般来说:资源在内存中是用资源对象树来表示的,该树在程序启动时创建. 2>   …
(纪念一下装了一整天濒临绝望的自己[/doge]) (以下所有下载项一律使用32位) step1:下载安装eclipse.适配的jdk.MinGW和QT 1.下载32位eclipse for c++以及版本适配的jdk eclipse官网下载就好 2.下载安装4.4.0版本的MinGW (版本不可忽略_(:зゝ∠)_因为之前已经安装了MinGW是4.8.5版本开始的时候就没注意,结果QT安装的时候出错,查了半天才知道QT4.8.5对应的是MinGW-gcc440版本而且非得用这么老的版本. (官…
一.国际化 国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. Qt支持现在使用的大多数语言,特别是: 所有东亚语言(汉语.日语和朝鲜语): 所有西方语言(使用拉丁字母): 阿拉伯语: 西里尔语言(俄语和乌克兰语等): 希腊语: 希伯来语: 泰语和老挝语: 所有在Unicode5. 1中不需要特殊处理的脚本. 在Qt中,所有的输入部件和文本绘制方式对Qt所支持的所有语言都提…
1.在Qt中使用 WebKit 浏览器核心 使用 QtWebKit 需要在工程文件(*.pro)中加入: QT +=webkitQT += network 2.QtWebKit的flash支持 QtWebKit 到固定的路径(NPAPI插件厂商的安装路径)下载入flash控件,如果需要flash支持,确保一下文件存在: C:\WINDOWS\system32\Macromed\Flash\NPSWF32.dll npswf32.dll就是 QtWebKit 需要的flash插件,由 microm…
一.安装VS2017 1.下载VS2017 进入vs下载官网https://www.visualstudio.com/zh-hans/downloads/,选择所需要的vs版本,进行在线安装. 2.安装 选择自定义安装,勾选Visual C++就行了,其他默认. 二.安装Qt 1.下载qt5.10.0 进入qtcn下载网站http://www.qtcn.org/bbs/read-htm-tid-1075.html,下载离线版本的qt安装包,即,offline Installers下的: Wind…
[CloudNotes版本更新历史与各版本下载地址请点击此处] [CloudNotes中文系列文章汇总列表请点击此处] [查看CloudNotes源代码请点击此处] 有时候,同一个名词,针对不同的人群,应该采用不同的表达方式.比如插件的概念,对于程序员而言,可以将其称为插件,或者扩展.对于用户而言,或许"扩展功能"一词会更加贴切.本文还是脱离不了码农的气质,继续讨论技术问题,因此,我会以"插件"一词进行描述. 概述 从1.0.5504.38654版本开始,Cloud…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 三年多前还在上研时,用C#+反射机制写过插件系统,后来又用MEF写过插件系统.插件系统本身具有易于扩展的优势,所以在实际项目中使用很频繁.即使在B/S项目中,插件的思想也是大行其道,比如前端单页面+AMD编程便可以理解为一种插件机制,以及后台扩展项目统一打包为一个jar放入主系统jar文件中一起发布,也可以理解为插件思想的运用. 这里我们回到C/S插件系统编…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 一般的WinForm中通过C#自带的Event机制便能很好的实现事件的注册和分发,但是,在插件系统中却不能这么简单的直接用已有的类来完成.一个插件本不包含另外一个插件,它们均是独立解耦的,实现插件和插件间的通信还需要我们设计出一个事件引擎来完成这个需求. 目前很多高级语言中基本都实现了观察者模式,并进行了自己的包装.比如C#中的delegate和event组合…
用了几次的QtCreateor,不习惯. 果断换回VS 基本步骤: 1.安装VS2010 2.安装Qt Creator5 3.安装Qt插件 qt-vs-addin-1.2.2-opensource 就可以在VS中新建Qt项目. 常见问题: 1.unable to find a qt build,to solve this problem specify a qt build 解决方法: 打开VS,菜单栏中有个Qt(Qt5)选项  Qt->Qt Options, Qt Versions中 add-…
MongoDB管理工具  MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简单的插件系统,其实代码量非常的少. 1.插件基类 插件系统需要一个插件基类的支持,这个基类,规定了一个插件所包含的固有字段,例如插件名称,插件说明,插件作者等等. 同时,还定义了主方法的名称,毕竟插件系统肯定要使用反射来完成,所以很多东西必须要统一起来. using System; namespac…
摘选自[王清培]博客 http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html 今天跟大家分享一下我们在日常开发中并不常用的开发模式“插件系统模式”,什么叫插件,从大一点的概念讲就是我们开发的软件是由很小的模块组成,每一块都能成功的装卸,使我们的软件成为一个有机体,在发生重大事故.改良优化等等的时候,我们不需要重新编译我们的系统就能很方便的进行升级替换进行使用:这样的开发模式就是插件系统开发模式:这个概念很大,每个…
窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打开windows时,桌面就是一个窗口,你打开浏览器时,你也正在访问窗口...好了,回到今天的话题,QT窗口系统,QT是一个跨平台的框架,类似微软的MFC,Borland的OWL,前者只适用于windows,而使用QT你可以开发windows平台应用程序,你也可以开发linux应用程序,当然了你也可以…
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序的开发,这里假设以VS为编译环境,MFC界面库来说明. 1. 主程序和插件的关系问题 插件架构一般可以用下面的图来表示: (注:此图来自李先静的博客文章:http://blog.csdn.net/absurd/archive/2006/07/04/877063.aspx ,略有修改,特向李大侠表示感…
MEF插件系统中通信机制的设计和实现 1.背景 一般的WinForm中通过C#自带的Event机制便能很好的实现事件的注册和分发,但是,在插件系统中却不能这么简单的直接用已有的类来完成.一个插件本不包含另外一个插件,它们均是独立解耦的,实现插件和插件间的通信还需要我们设计出一个事件引擎来完成这个需求. 目前很多高级语言中基本都实现了观察者模式,并进行了自己的包装.比如C#中的delegate和event组合,java awt中的Event和addActionListener组合,Flex中的Ev…
动态加载与插件系统的初步实现(三):WinForm示例 代码文件在此Download,本文章围绕前文所述默认AppDomain.插件容器AppDomain两个域及IPlugin.PluginProvider.PluginProxy3个类的使用与变化进行. 添加WinForm项目Host.类库Plugin.引用System.Windows.Forms;的类库Plugin_A与Plugin_B,其中Plugin_A.Plugin_B的项目属性中,“生成”选项卡中“输出路径”设置为..\Host\bi…
一.前言 我心中的插件系统应该是像Nop那样(更牛逼的如Orchard,OSGI.NET),每个插件模块不只是一堆实现了某个业务接口的dll,然后采用反射或IOC技术来调用,而是一个完整的mvc小应用,我可以在后台控制插件的安装和禁用,目录结构如下: 生成后放在站点根目录下的Plugins文件夹中,每个插件有一个子文件夹 Plugins/Sms.AliYun/ Plugins/Sms.ManDao/ 我是一个有强迫症的的懒人,我不想将生成的dll文件拷贝到bin目录. 二.要解决的问题 1.as…
版权声明:如需转载,请告知博主并声明出处 https://blog.csdn.net/CLinuxF/article/details/88816436文章目录前言在线安装离线安装(推荐)前言很多朋友喜欢用VS来进行Qt开发,刚好最近我也有这个需求(需要在VS上面调试,QtCreator调试我就不吐槽了!!!)在这里我给大家分享一下vs2017 x64的qt插件的安装与创建工程. 在线安装点击“工具 —-> 扩展和更新” 点击“联机”—->“搜索qt”—->”下载” 开始下载,这里下载很慢…
/*******************************************************************************************/ 一.坐标系统 坐标系统相对于对于父窗口而言(最外层的父窗口就是屏幕了,也可以说外面没有窗口了,这时就是相对整个电脑屏幕而言了) 原点:就是左上角 x: 往右递增 y: 往下递增 具体见图1: 具体示例: /* 对于主窗口,坐标系统相对于屏幕 * 原点:相对于屏幕左上角 * x: 往右递增 * y: 往下递增 *…
1.下载所需安装包: Qt5.3.Qt插件下载地址:http://qt-project.org/downloads. qt-vs-addin-1.1.11-opensource.exe 下载地址:http://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.1.11-opensource.exe.mirrorlist 2.安装过程选择默认安装路径. 3.配置开发环境 选择:Qt5->Qt Options->Add,配置VS的开发环境…
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddler有一套自成的插件系统,可以在其官方网站找到完整文档(戳这里).通过其提供的一整套接口,我们可以从界面至功能全方位扩展它.这里主题简单,我们只为其添加一个JSON解析界面. PART I:JSON解析 Mgen有一个JSON解析范例(戳这里)代码相当好看,WPF模板绑定也很强大.这里使用Json.c…
涉及内容: 反射与MEF解决方案 AppDomain卸载与代理 WinForm.WcfRestService示 PRRT1: 反射实现 插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接口,宿主使用类型发现及挂载插件,以下是反射实现. 创建类库项目Plugin,添加接口IPlugin: public interface IPlugin { String DoStuff(); } 创建控制台程序HostApp,添加对Plugin项目的引用,Main方法代码: class Progra…
我们每个人在内心深处都怀有一个梦想: 希望创造出一个鲜活的世界,一个宇宙.处在我们生活的中间.被训练为架构师的那些人,拥有这样的渴望: 在某一天,在某一个地方,因为某种原因,创造出了一个不可思议的.美丽的.摄人心魄的场所,在那里人们可以漫步,可以梦想,历经很多世纪绵延不绝. --Christopher Alexander Scratch是一个游乐场 在我心目中,Scratch便是这样的一个美丽的场所,孩子们和保持着童真的成年孩子们在其中漫步.游戏以及梦想.Ta们在Scratch这个游乐场中创造并…
(相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标系和UI的界面控制. 1.墨卡托投影 眼下osm採用墨卡托投影,这个投影的原理能够用一个假想实验解释. 如果地球是一个透明的球体.在球体的球心有一个光源.我们把一张幕布沿着赤道卷起来.使之与地球内切,地球上的一个点在这块幕布上的投影就是其墨卡托投影位置. 上图中,地球半径是R=米,可想而知,圆柱顶面…
Qt 学习之路 2(24):Qt 绘制系统简介 豆子 2012年10月30日 Qt 学习之路 2 77条评论 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的操作:QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间:QPaintEngine提供了画笔(QPainter)…
怎样开发Qt插件,能够在Qt Assistant 中搜索"Qt Plugins"或"How to Create Qt Plugins",看看那篇manual中的介绍. 当中涉及到了几个宏 Q_DECLARE_INTERFACE( ClassName, Identifier) This macro associates the given Identifier (a string literal) to the interface class called Class…
此文件仅为步骤操作作一个记录,以便以后方便查阅. 1.操作大体参考这个网站:http://blog.csdn.net/defonds/article/details/5013412 2.我的运行环境:使用TQ210硬件开发平台,编译器是天嵌提供的4.4.6,Eclipse好像是我自己下载安装的,问题是现在要给Eclipse装Qt的插件. 3.去Qt网站上下载Qt的源码,Qt提供的Eclipse插件.妈蛋,这里弄错了几次.在上面的文章中,会有介绍说,根据自己的操作系统位数下载对应的Eclipse…