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

php网站开发计划一流的福州网站建设

php网站开发计划,一流的福州网站建设,建立网站有怎么用途,在国外做电商网站有哪些目录 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/642695/

相关文章:

  • 高性能网站建设进阶指南下载wdcp 快速迁移网站
  • 建设教育协会网站房产资讯的网站怎么做
  • 网站网页怎么做如何查看网站做没做竞价
  • 济南建网站的网站l临沂建设工程信息网站
  • 网站建设美词原创php网站开发实验总结
  • 遵义建设厅网站如何申请个人网站域名
  • 济南建设网官方网站合肥市建设行政主管部门网站
  • 书怎么做pdf下载网站信息流优化师需要具备哪些能力
  • 专业制作公司网站公司公积金网站建设方案
  • 专门做产品定制的网站自豪得用wordpress删
  • 佳木斯做网站网站空间试用
  • 南京建站平台wordpress 主题 自适应
  • 广东建设职业注册中心网站wordpress 500一片空白
  • 鲜花销售网站模板网站设计需求分析报告
  • 开发中英文切换网站如何做本周热点新闻事件
  • 松江网站建设多少钱网络营销推广的八大核心
  • 郑州做设计公司网站暗网网站
  • ps网站背景图片怎么做学技能的免费网站
  • 企业网站开发软件如何恢复wordpress
  • 用脚手架如何搭建项目做网站大气绿色网站模板
  • 海淀地区网站建设苏州论坛
  • 电影项目做产品众筹哪个网站好网站设计评价标准
  • 上海要做网站怎么卖wordpress主题
  • 废旧建筑模板多少钱一吨seo站内优化培训
  • 您在工信部门备案网站获取的icp备案号plone wordpress
  • 网站怎么用PS做公司电脑做网站
  • 化妆品网站设计思路网站管理规范
  • 内部优惠券网站建站马鞍山网站建设电话
  • 手机可以做3d动漫视频网站广告联盟平台
  • 做了静态网站怎么显示在互联网上度假村网站模板