Qt插件入门——使用插件扩展Qt自身

【QT】QT中插件化开发及其简单使用 在此记录以下QT中插件的开发过程及插件的使用方式,方便以后查阅。 阅读详情
 

点击上方蓝字可关注公众号,方便下次阅读。

本篇文章只能回答一半,如何创建扩展Qt自身的插件。

 

Qt提供了两种用于创建插件的API:

用于编写Qt自身扩展的高级API:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。本次的例子就是自定义样式的例子。

用于扩展Qt应用程序的低级API。下次介绍。

 

例如,如果您要编写自定义QStyle子类并让Qt应用程序动态加载它,则可以使用更高级别的API。由于较高级别的API建立在较低级别的API之上,因此两者都有一些共同的问题。

高级API:扩展 Qt自身,编写扩展Qt本身的插件是通过将适当的插件基类继承为子类,实现一些功能并添加宏来实现的。

 

Qt官方文档:https://doc.qt.io/qt-5/plugins-howto.html。

 

 

程序环境:Ubuntu 14.04、 Qt5.5.1

 

使用Qt自带的例子方便入门。Qt5.5.1自带的例子无法运行出红色按钮的效果,所以做了微小改动。

 

1、打开Qt自带的工程

打开Qt Creator后,默认在【Welcome】选项,之后选择【Examples】,搜索【sty】,选择红色按钮那个。

2. 插件工程简介

SimpleStylePlugin类需继承父类QStylePlugin,并按照对应规则的接口进行实现,QStylePlugin类插件基类中的一个,属于样式基类。

在SimpleStylePlugin中create了 SimpleStyle,也就是我们自己要实现的样式。

SimpleStyle继承了QProxyStyle,重新实现了polish()。

 

void SimpleStyle::polish(QPalette &palette)

{

//    palette.setColor(QPalette::Button, Qt::red);    //无法运行出红色按钮的效果

    palette = QPalette(QPalette::Button, Qt::blue);

}

3. 主程序简介

主程序中创建了窗口部件,这部分我们无需主要注意。我们要关注的是在主程序中如何使用我们新的样式。

QApplication::setStyle(QStyleFactory::create("simplestyle"));

 

4. 程序运行效果

插件生成路径:

5. 让其他工程使用自定义样式

将我们生成的插件拷贝到下面目录,Qr Designer在运行时会自动查找插件,如果找到插件则会自动加载。

下面是一个测试效果。此时无需我们再主程序中调用QApplication::setStyle(QStyleFactory::create("simplestyle")),样式也会自动被改变。

6、总结

主要就是运行了Qt自带的例子,方便初学者结合Qt自带的文档进行理解。

Qt的插件也可以理解为一种动态库,只不过只能是使用Qt来进行加载。

使用Qt开发的大型程序可以通过Qt的插件机制进行解耦。加载插件的宿主程序不关心插件的业务逻辑,只需按照对应接口调用即可;插件开发者可自己测试写的插件,方便维护。

欢迎关注公众号,方便下次阅读~

用于扩展Qt自身的插件(下) QtCreator的设计器中加载自定义的插件。 阅读详情

相关推荐

用于扩展Qt本身的插件(上)

默认是选择包含项目的,需手动勾选创建代码框架,会生成对应的下图中所示的系列文件名,此时可在图标文件项点击后面的浏览按钮选择自己要添加的图标图片。后面的步骤就不用说了,项目名为StyleWindow,路径采用默认的就行,基类为QWidget,采用默认声的Widget就行,不要勾选ui,该项目不用ui界面,一路操作,直到完成。2. 扩展Qt自身,同时需要在QtCreator的设计器中加载,类似于自定义控件,可像Qt的基本控件那般在设计器中直接展示,拖拽使用,具有属性,信号槽等。之后点击下一步按钮。

肩上风骋的博客 1395

Qt5的插件机制(7)--插件开发示例代码(Lower-level API)

插件代码 接口类头文件 MyPluginInterface.h #ifndef INTERFACES_H #define INTERFACES_H #include #define QtPluginDemo_iid "org.qt-project.Qt.PluginDemo" class MyPluginInterface { public: virtual int add(int,

NewThinker_wei 的专栏 1万+

Qt 扩展-扩展部件和插件

Qt 扩展-扩展部件和插件 sf2gis@163.com 2015年1月30日   1 目标:扩展Qt现有的功能。 2 原理:已有部件扩展,定义新控件、扩展Qt自身插件,定义和扩展应用程序的插件。 插件是指由应用程序指定接口,由其它程序实现此接口,并可由应用程序动态加载的实现库。 方法:扩展现有部件,扩展Qt自身插件,扩展应用程序的插件,自定义新的控件。 参考:http://zh.

弗里曼的小伙伴 3454

如何创建Qt Plugins (插件)之 使用高级api

Qt提供了2个api来创建插件:QStringList SimpleStylePlugin::keys() const { return QStringList() << "SimpleStyle"; } 一个高级的api 用来写Qt自己本身的插件:如自定义数据库驱动,图片格式,text codecs, 自定义样式,etc.一个低级的api用来扩展Qt的application

penghuilater的博客 4221

VS2019安装配置QT插件(qt-vsaddin)

Windows的Qt开发,一般采用Visual Studio安装Qt插件的方法开发Qt程序,毕竟VS开发工具还是比QtCreator开发工具强大、好用的多。本教程采用VS2019安装配置Qt插件(qt-vsaddin-msvc2019-2.6.0.vsix),默认已经安装了VS2019(已安装“MSVC V141-VS 2017 C++ x64/x86 生成…”选项)和Qt5.14(已安装“msvc2017 32-bit”和“msvc2017 64-bit”选项)。

咸鱼爱幻想的博客 3万+

Qt应用之关于RPC的那点儿理解,说得通透点吧

最近写分布式应用,无可避免地需要用到rpc调用,看到网上一大片的大堆大堆文字,心生敬畏了。 可是当我看到百度的sofa-rpc的时候,拿来用了一下。立马就发现,亲,这不就是dbus的网络版吗?当然了,很多同学没有用过dbus服务,自己去试试Qt里面的dbus应用吧。很好理解的。 百度sofa-rpc也是谷歌的grpc的产物,当然了还有很多其他的rpc框架。不过只要你明白dbus,rpc也就好理解了...

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 5796

【转载】VS中安装QT扩展插件

VS中安装QT扩展插件 1. 安装qt软件 QT下载网址(各版本). QT(5.12.11)直达界面. 根据操作系统不同,选择相应版本下载 双击运行…输入QT账号信息,没有需要注册一个 安装时须勾选MSVC 2017 64-bit,若用32位,则选32-bit 安装后,打开QT软件(…\Qt5.12.11\Tools\QtCreator\bin\Qt Creator.exe),可在 工具->选项->Kits->QT Versions 中看到两个编译器 自带编译器MinGW + MSVC2

weixin_41985687的博客 7628

利用插件扩展 Qt 应用程序

不仅 Qt 本身可以通过插件进行扩展,而且 Qt 应用程序也可以通过插件来扩展,这需要应用程序使用 `QPluginLoader` 检测和加载插件。

青春不老,奋斗不止! 1万+

(Qt) Qt项目的插件化

笔者之前的项目所采用的是动态库的方式让程序运行时加载DLL,最近接触的几个项目均用插件化的方式加载程序所需要的模块。一开始我也纳闷,用我浅薄的理解Qt的插件化本质还是加载的dll,只不过是可以在运行期间进行dll的加载,无需加载lib,那么这样和存粹用动态库加载区别应该不大,一些动态库自带的好处比如解耦,灵活的好处,插件化也具备,那么这两个有什么不同呢,插件化是不是还能带来纯粹动态库没有的一些好处,下面就是我自己的角度想的好处。 插件支持热插拔使应用程序的使用更加灵活,软件只需要用到的时候加载插

苏州-青蛙 2423

利用插件扩展 Qt 本身

Qt 提供了两套用于创建插件的 API:High-Level API 和 Low-Level API

青春不老,奋斗不止! 8799

概率论与数理统计基础概念与重要定义汇总

文章目录一、随机事件和概率1:互斥,对立,独立事件的定义和性质。2:概率,条件概率和五大概率公式3:古典型,几何型概率和伯努利试验 一、随机事件和概率 1:互斥,对立,独立事件的定义和性质。 互斥事件\color{red}\textbf{互斥事件}互斥事件 事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件。也可叙述为:不可能同时发生的事件。如A∩B为不可能事件(A∩B=Φ),那么称事件A与事件B互斥,其含义是:事件A与事件B在任何一次试验中不会同时发生。 则P(A+B)=P(A)+P(B)(这个公

csyifanZhang的博客 1万+

FreeCAD插件系统完全指南:如何快速构建你的专业3D建模工作流

FreeCAD作为一款免费开源的参数化3D建模软件,其强大的插件系统能够让你轻松扩展功能,从简单的零件设计到复杂的工程分析,打造完全符合你需求的专业建模环境。本文将为你揭示FreeCAD插件生态的完整使用技巧,帮助你快速构建高效的工作流。 ## 🚀 插件系统入门:理解FreeCAD的扩展架构 FreeCAD的插件系统采用模块化设计,所有扩展功能都通过官方定义的API与主程序交互,确保兼容性和

gitblog_01144的博客 470

Matlab:imageDatastore() 高效读取图像数据集的实战技巧

本文详细介绍了Matlab中imageDatastore()函数的高效使用技巧,帮助用户从繁琐的手动读取图像数据集中解放出来。通过核心语法、关键参数(如IncludeSubfolders、LabelSource、ReadSize)的解析,以及数据集分割、打乱等进阶实战操作,指导读者构建稳定、高效的图像数据读取管道,特别适用于大型图像数据集处理和机器学习项目。

hill8的博客 1101

qt插件开发

转载:QtCreator插件开发(2):第一个插件|DevBean'sWorld本节介绍如何开发一个最简单的QtCreator的插件。...http://www.devbean.net/2011/08/qtcreator-plugin-develop-2/#jtss-ishare 转载于:https://www....

weixin_30871293的博客 72

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4558

Trans论文复现:电池储能调峰和调频:超线性增益的联合优化程序代码!

本程序参考一区SCI期刊《Using Battery Storage for Peak Shaving and Frequency Regulation: Joint Optimization for Superlinear Gains》,程序。与之前将电池储能用于单一应用相比,研究结果表明,如果电池联合提供多种服务,它们可以获得比以前想象的更大的经济效益。欢迎感兴趣的小伙伴关注下方公众号获取完整版代码哦~,小编会继续推送更有质量的学习资料、文章程序代码~限于篇幅,仅列出部分算例的结果!

weixin_48747334的博客 567

基于Qt插件机制扩展应用程序示例

基于Qt插件机制扩展应用程序示例

lzqd1314的博客 2239

Foxmail 7.2.25以下版本XSS漏洞实战复现:手把手教你如何构造恶意邮件(含防御方案)

本文深入解析Foxmail 7.2.25以下版本的XSS漏洞(CNVD-2025-06036),详细展示如何构造恶意邮件进行跨站脚本攻击,并提供从客户端升级到企业级防护的多层次防御方案,帮助用户有效防范安全风险。

view3的博客 163

Qt插件开发入门

Qt中为我们提供了两种开发插件的方式。一种是使用High-Level API接口,一种是使用Low-Level API接口。

5305

ARM功耗管理软件之DVFS&AVS

思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS?

AI-安全-功耗 1232

第 13 章:Spring AI Alibaba MCP 与 Nacos3 — 企业级MCP服务

理解Spring AI Alibaba 框架下的MCP服务与Nacos注册中心整合的必要性,学会Spring AI Alibaba-基于Nacos的MCP实现方法

paopao_wu的专栏 788

Qt插件化(Plugins)开发扩展应用程序

前言 在前一篇文章中介绍了插件的定义及Qt中插件的基本概念,那么这里通过一个最简单的demo来对Qt插件开发有一定的了解。 Qt扩展应用程序 要想使用插件来扩展应用程序,那么首先在主程序中的步骤如下: 定义一组用于与插件通信的接口(只有纯虚函数的类) 使用 Q_DECLARE_INTERFACE() 宏来告诉 Qt 元对象系统有关接口的情况 在应用程序中使用 QPluginLoader 加载插件...

luoyayun361的专栏 1万+

Qt C++ + Qt 3D 的数字孪生工厂

以下是一个基于 **Qt C++ + Qt 3D** 的数字孪生工厂完整源码示例,集成了 **Qt 3D** 产线建模和 **WebSocket** 实时数据交互。ui->qualifiedProductsLabel->setText(QString("合格产品: %1").arg(data.qualifiedProducts));ui->totalProductsLabel->setText(QString("总产量: %1").arg(data.totalProducts));

寒寒豆豆软件公司的博客 149

Qt插件开发总结1--插件的创建及使用

文章目录一、插件二、插件和动态库的区别三、Qt中的插件四、Qt插件开发--程序结构五、Qt插件开发--主程序部分开发流程六、Qt插件开发--插件程序部分开发流程七、实例编写7.1、主程序部分7.2、插件程序部分八、插件使用 一、插件 插件是一种(遵循一定规范的应用程序接口编写出来的)程序,定位于开发实现应用软件平台不具备的功能的程序。 插件必须依赖于应用程序才能发挥自身功能,仅靠插件是无法正常运行的;相反地,应用程序并不需要依赖插件就可以运行,这样一来,插件就可以加载到应用程序上并且动态更新而不会对应用诚信

贝勒里恩的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Qt 插件机制使用及原理

Qt插件机制是一种强大且灵活的功能扩展方式,它允许开发者通过创建和加载插件来增强Qt应用程序的功能。通过遵循一定的规范,开发者可以轻松地创建和使用插件,从而满足各种复杂和多变的需求。

红军不怕远征难,万水千山只等闲 4182

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Qt(MinGW ) Windows下创建动态库
下一篇: Qt插件创建及加载
Pou光明
博客等级 码龄12年 3701粉丝 398原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值