当前位置: 首页 > news >正文

音乐网站怎么做教做衣服的网站

音乐网站怎么做,教做衣服的网站,网站开发怎么样?,论坛企业推广写在前面 Qt–动态链接库一文中提到#xff0c;动态方式加载dll只能加载 extern C“ 的导出函数#xff0c;而无法加载类#xff0c;因此可以使用Qt提供的插件来实现导出类的动态加载。 QPlugin是Qt插件框架的一部分#xff0c;是一种轻量级的插件系统#xff0c;…写在前面 Qt–动态链接库一文中提到动态方式加载dll只能加载 extern C“ 的导出函数而无法加载类因此可以使用Qt提供的插件来实现导出类的动态加载。 QPlugin是Qt插件框架的一部分是一种轻量级的插件系统用于在QT应用程序中动态加载和卸载功能模块QPluginLoader类提供了对Qt插件的访问。 开发环境 Qt5.15.2 Qt Creator10.0.2 自定义插件步骤 自定义插件时要先创建一个接口作为插件类的基类。因为插件存储在一个dll中因此可以动态的加载。 创建一个插件包含以下几步 ①定义一个接口类只有纯虚函数的抽象类 ②使用Q_DECLARE_INTERFACE()宏在Qt的元对象系统中注册该接口 ③再定义一个插件类必须继承自QObject类和上面创建的接口类且需先继承QObject ④在插件类中使用Q_INTERFACE()宏在Qt的元对象系统中注册该接口 ⑤使用Q_PLUGIN_METADATa()宏导出该插件 ⑥使用合适的.pro文件构建该插件 这里和之前的dll的创建和使用一样同样以两个项目进行一个插件项目一个使用插件项目。 创建插件 打开Qt Creator新建空项目Empty qmake Project。 命名为MyPlugin 套件配置 新建一个MyPluginInterface 接口类 在MyPluginInterface.h中添加以下内容 //myplugininterface.h #ifndef MYPLUGININTERFACE_H #define MYPLUGININTERFACE_H#define MYPLUGININTERFACE_IID org.examples.myplugin.interface”class MyPluginInterface { public:virtual ~MyPluginInterface() {} //这里需内敛实现virtual void printFromPlugin() 0; //声明为纯虚函数};Q_DECLARE_INTERFACE(MyPluginInterface, MYPLUGININTERFACE_IID)#endif // MYPLUGININTERFACE_H再创建插件类继承自QObject 添加对QMyPluginInterface的继承元对象的接口注册和导出 //myplugin.h #ifndef MYPLUGIN_H #define MYPLUGIN_H#include QObject #include MyPluginInterface.hclass MyPlugin : public QObject, MyPluginInterface {Q_OBJECTQ_PLUGIN_METADATA(IID MYPLUGININTERFACE_IID)Q_INTERFACES(MyPluginInterface)public:explicit MyPlugin(QObject *parent nullptr);void printFromPlugin(); //实现继承自基类的纯虚函数signals:};#endif // MYPLUGIN_H //myplugin.cpp #include myplugin.h #include QDebugMyPlugin::MyPlugin(QObject *parent): QObject{parent} {}void MyPlugin::printFromPlugin() {qDebug() Print From Plugin; } 最后修改.pro文件构建项目 //MyPlugin.pro TEMPLATE lib #表明该项目要构建库 CONFIG plugin #告知qmake要创建一个插件HEADERS \MyPluginInterface.h \myplugin.hSOURCES \myplugin.cpp 构建会提示MyPluginInterface.h中有错误D:\QtApplication\MyPlugin\MyPlugin\MyPluginInterface.h:15: error: Parameter type ‘MyPluginInterface’ is an abstract class 这里将MyPluginInterface.h从项目中移除注意不要删除 再重新构建生成即可 可以在输出目录下看到dll: 然后提供 ①MyPluginInterface.h ②MyPlugin.dll 给其他项目使用即可。 使用插件 这里新建一个Qt控制台应用程序来加载上面的插件并使用 构建套件 将MyPluginInterface.h拷贝到MyPluginTest.pro目录的include文件夹中将MyPlugin.dll放到MyPluginTest项目的输出目录下 在MyPluginTest.pro中添加包含目录 在main.cpp中加载使用MyPlugin //main.cpp #include QCoreApplication#include QDebug #include QPluginLoader #include MyPluginInterface.hint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//QPluginLoader loader(D:/QtApplication/MyPluginTest/build-MyPluginTest-Desktop_Qt_5_15_2_MSVC2019_64bit-Release/MyPlugin.dll);QPluginLoader loader(../MyPlugin.dll);QObject* instance loader.instance();if (instance){MyPluginInterface* plugin qobject_castMyPluginInterface*(instance);if (plugin){plugin-printFromPlugin();}}else{qDebug() Instance is null;return 0;}return a.exec(); } 输出结果如下 总结 使用QPluginLoader可动态加载dll通过QPluginLoader::instance()得到插件接口类的实例再通过多态调用对应插件类的接口实现以此来弥补QLibrary不能动态加载使用导出类的缺陷。 后续扩展其他插件时需添加抽象的插件接口类(MyPluginInterface)及其对应的插件类(MyPlugin)实现。
http://www.hkea.cn/news/14434718/

相关文章:

  • 给别人建设网站怎么收费镇江网站建设介绍服务
  • 网站的建设工具实施过程安庆市住房和城乡建设局网站首页
  • 网站建设计划表php asp jsp 网站
  • 网站建设维护价格windows与wordpress
  • 可以自己做网站做宣传吗事业单位门户网站开发
  • 网站建设与维护新的体会好的免费博客网站
  • 做网站学cdr吗可以自己做网站这么做
  • 怎么查询网站是哪家公司做的常州金坛网站建设
  • 网站建设方案多少钱网站型建设模板
  • 新东方广州门户网站WordPress怎么安装不了
  • 网站制作可以卖多少钱wordpress垂直模板
  • 郑州服装网站建设广州注册公司的流程及费用
  • 德阳企业品牌网站建设运营网站开发工作
  • 公司网站制作公新网站建设脑图
  • 交三百能在网站上找兼职做的什么是网络营销的市场细分
  • 毕业设计代做网站都可信么wordpress社交图标
  • 云南省建设厅网站有了网站源码如何做网页
  • 梓潼 网站建设 有限公司怎么给自己的品牌做网站
  • 网站教程君临天下游戏网站开发者
  • 网页制作和网站建设的区别微小旅行社能否做网站
  • 南宁企业建站系统多语言外贸网站制作
  • 做旅游网站会遇到什么问题软件开发公司app
  • 网站页面布局图网页策划方案
  • 网站设计用什么软件网站如何做微信支付
  • 微信公众号商城网站开发陕西百威建设监理有限司网站
  • dw个人网站制作教程做图片的网站
  • 互联网招聘网站排行wordpress 电子杂志
  • 有没有专门做平铺素材的网站网站创建的基本流程
  • 浙江网站备案wordpress 页码显示
  • 电子商务网站建设收益网站备案信息注销