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

电子商务网站建设选择网站建设价格女

电子商务网站建设选择,网站建设价格女,安徽省建设工程八大员报名网站,郑州做食用菌配送的网站目录 1.生成插件 1.1.环境说明 1.2.服务类#xff0c;纯虚类#xff0c;提供接口 1.3.实现插件类#xff0c;实现纯虚函数 1.4.激活插件#xff0c;加入ctk框架的生命周期中 1.5.添加资源文件 1.6..pro文件 2.使用此插件 3.总结 1.生成插件 1.1.环境说明 编译ct…目录 1.生成插件 1.1.环境说明 1.2.服务类纯虚类提供接口 1.3.实现插件类实现纯虚函数 1.4.激活插件加入ctk框架的生命周期中 1.5.添加资源文件 1.6..pro文件 2.使用此插件 3.总结 1.生成插件 1.1.环境说明 编译ctkQt5.12.12MSVC2017_64Cmake 生成插件Qt5.12.2MSVC2017_64qmake 1.2.服务类纯虚类提供接口 PluginAService.h #ifndef PLUGINASERVICE_H #define PLUGINASERVICE_H #include QtPluginclass PluginAService { public:virtual ~PluginAService() {}virtual void A_Func() 0; };#define PluginAService_iid org.commontk.service.demos.PluginAService Q_DECLARE_INTERFACE(PluginAService, PluginAService_iid) //此宏将当前这个接口类声明为接口后面的一长串就是这个接口的唯一标识。#endif // PLUGINASERVICE_H 1.3.实现插件类实现纯虚函数 PluginAImpl.h #ifndef PLUGINAIMPL_H #define PLUGINAIMPL_H#include PluginAService.h #include QObjectclass ctkPluginContext;class PluginAImpl : public QObject, public PluginAService {Q_OBJECTQ_INTERFACES(PluginAService)/*此宏与Q_DECLARE_INTERFACE宏配合使用。Q_DECLARE_INTERFACE声明一个接口类Q_INTERFACES当一个类继承这个接口类表明需要实现这个接口类*/public:PluginAImpl(ctkPluginContext* context);void A_Func() Q_DECL_OVERRIDE; };#endif // PLUGINAIMPL_H PluginAImpl.cpp #include PluginAImpl.h #include QtDebugPluginAImpl::PluginAImpl(ctkPluginContext* context) {}void PluginAImpl::A_Func() {qDebug() A_Func(); } 1.4.激活插件加入ctk框架的生命周期中 PluginAActivator.h #ifndef PLUGINAACTIVATOR_H #define PLUGINAACTIVATOR_H #include QObject #include ctkPluginActivator.h #include PluginAService.hclass PluginAActivator : public QObject, public ctkPluginActivator {Q_OBJECTQ_INTERFACES(ctkPluginActivator)Q_PLUGIN_METADATA(IID PLUGINA)//向Qt的插件框架声明希望将xxx插件放入到框架中。public:void start(ctkPluginContext* context);void stop(ctkPluginContext* context);private:QSharedPointerPluginAService m_s; }; #endif // PLUGINAACTIVATOR_H PluginAActivator.cpp #include PluginAActivator.h #include PluginAImpl.h #include QDebugvoid PluginAActivator::start(ctkPluginContext* context) {PluginAImpl* pluginAImpl new PluginAImpl(context);context-registerServicePluginAService(pluginAImpl);m_s.reset(pluginAImpl); }void PluginAActivator::stop(ctkPluginContext* context) {Q_UNUSED(context)//Q_UNUSED,如果一个函数的有些参数没有用到、某些变量只声明不使用但是又不想编译器、编辑器报警报其他没有什么实际性作用 } 1.5.添加资源文件 资源名随便取前缀为PluginA/META_INF文件名为MANIFEST.MF MANIFEST.MF内容 注意MANIFEST.MF的路径必须是这样:/插件名/META-INF/MANIFEST.MF否则系统找打不到此资源文件此插件加载就会报异常。 MANIFEST.MF文件中有很多可填内容在ctkPluginConstants.h中能找到相关宏定义 1.6..pro文件 include($$PWD/../../Plugins/Plugins.pri)QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11TARGET PluginA# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0HEADERS \PluginAActivator.h \PluginAImpl.h \PluginAService.hSOURCES \PluginAActivator.cpp \PluginAImpl.cppRESOURCES \resource.qrc2.使用此插件 main.cpp #include QCoreApplication #include ctkPluginFrameworkFactory.h #include ctkPluginFramework.h #include ctkPluginException.h #include ctkPluginContext.h #include QtDebug #include QUrl #include PluginAService.hQString static firstPlugin_filePath D:/openCode/ctkcreator/bin/qmake/debug/plugins/PluginA.dll;int main(int argc, char *argv[]) {QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);QApplication a(argc, argv);//启动框架QString path QCoreApplication::applicationDirPath() /linkplugins;ctkPluginFrameworkLauncher::addSearchPath(path, true);ctkProperties properties;properties.insert(ctkPluginConstants::FRAMEWORK_STORAGE_CLEAN, ctkPluginConstants::FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT);ctkPluginFrameworkFactory fwFactory(properties);QSharedPointerctkPluginFramework framework fwFactory.getFramework();// 初始化并启动插件框架try {framework-init();framework-start();qDebug() CTK plugin framework start...;} catch (const ctkPluginException e) {qDebug() CTK plugin framework init err: e.what();return -1;}// 获取插件服务的contexctkPluginContext* pluginContext framework-getPluginContext();try {// 安装插件QSharedPointerctkPlugin plugin pluginContext-installPlugin(QUrl::fromLocalFile(firstPlugin_filePath));qDebug() QString(Plugin[%1_%2] installed...).arg(plugin-getSymbolicName()).arg(plugin-getVersion().toString());// 启动插件plugin-start(ctkPlugin::START_TRANSIENT);qDebug() Plugin start...;} catch (const ctkPluginException e) {qDebug() QString(Failed install or run plugin: ) e.what();return -2;}// 获取服务引用ctkServiceReference reference pluginContext-getServiceReferencePluginAService();if (reference) {// 获取指定 ctkServiceReference 引用的服务对象PluginAService* service qobject_castPluginAService*(pluginContext-getService(reference));if (service ! Q_NULLPTR) {// 调用服务service-A_Func();}}return a.exec(); } 不出意外在控制台会打印出A_Func()。 3.总结 这就是在Qt和CTK中编写和使用插件的基本流程。CTK作为Qt的扩展主要用于医疗应用开发但插件的编写和加载机制仍然遵循Qt的标准做法。希望这能帮助你开始编写自己的CTK插件
http://www.pierceye.com/news/161300/

相关文章:

  • 西宁建设网站软件徐州集团网站建设公司
  • 做网站卖设备找哪家好百度智能云windows系统服务器建站
  • 长沙企业做网站专门查企业信息的网站
  • 比较权威的房产网站百度网盘官网登陆入口
  • 金融商城快捷申请网站模板下载安全电子商务网站设计
  • 公司网站建设重要性天津建设交培训中心网站
  • 成都网站制作东三环论文一区二区三区是什么意思
  • 织梦图片瀑布流网站模板成都大型网站维护公司
  • 企业信息网站wordpress怎么调用m3u8视频
  • 前端怎么接私活做网站中文h5编程工具
  • wordpress模板 站长营销型网站开发
  • 广西南宁市住房和城乡建设局网站网络平台怎么建
  • 徐州提供网站建设报价表手机微网站怎么做
  • 建设汽车行业网站网站建设规划书百度文库
  • 金坛区建设局网站为什么我的网站百度搜不到
  • 高端t恤定制网站google搜索网址
  • 海南省住房和城乡建设厅网站重庆建设工程安全网
  • 免费帮忙做网站如何给网站增加外链
  • 如何建设网站接收数据加油优惠卡app软件开发
  • 改网站js代码网络销售挣钱吗
  • 怎么通过数据库做网站的登录专业外贸网站制作公司
  • 上海网站建设上海黄金线上学编程哪个机构比较好
  • 个人网站能 做淘客吗徐州网站建设工作室
  • 网站公司备案通知百度seo文章
  • 做网站专业服务新网域名官网
  • 网站dns多久刷新广州网站建设开发
  • 标准网站有哪些西安市沣东新城建设局网站
  • 对php网站开发技术课程总结广州网站策划公司
  • 站长工具爱站微信服务商平台官网
  • 中山市网站建设公司网页设计与制作教程第4版