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

asp.net做电商网站吉林seo管理平台

asp.net做电商网站,吉林seo管理平台,有什么网站可以做批发,北京学设计去哪个网站目录 1.概述 2.监听接口 3.具体实现 1.概述 CTK(Common Toolkit)框架中的事件监听机制是一个重要的功能,它允许开发者在特定事件发生时接收到通知并执行相应的操作。CTK框架主要支持三种类型的事件监听:框架事件、插件事件和服…

目录

1.概述

2.监听接口

3.具体实现


1.概述

        CTK(Common Toolkit)框架中的事件监听机制是一个重要的功能,它允许开发者在特定事件发生时接收到通知并执行相应的操作。CTK框架主要支持三种类型的事件监听:框架事件、插件事件和服务事件。但是这些事件只有再变化时才能监听到,如果已经变化过后,进入一个稳定的状态,这时才去监听,那么是无法监听到的。以下是对这三种事件监听的详细解析:

        框架事件

        针对整个框架的,相当于只有一个,因为框架只有一个,但是这里有个问题,就是监听这个事件是在框架初始化之后的,所以根本没法监听到框架事件的初始化,只能监听到结束的事件。常见的框架事件包括:

  • RAMEWORK_STARTED:框架已经启动。
  • PLUGIN_ERROR:插件执行过程中发生错误。
  • PLUGIN_WARNING:插件执行过程中产生警告。
  • PLUGIN_INFO:插件的某种信息性事件。
  • FRAMEWORK_STOPPED:框架已经被停止。
  • FRAMEWORK_STOPPED_UPDATE:框架在更新过程中停止。
  • FRAMEWORK_WAIT_TIMEDOUT:在等待超时过期之前,框架没有停止。

        插件事件

插件事件与插件的安装、启动、停止和卸载等过程紧密相关。常见的插件事件包括:

  • INSTALLED:插件已经被安装。
  • RESOLVED:插件已经被解析。
  • LAZY_ACTIVATION:插件将被惰性激活。
  • STARTING:插件即将被激活。
  • STARTED:插件已经被启动。
  • STOPPING:插件即将停用。
  • STOPPED:插件已经被停止。
  • UPDATED:插件已经被更新。
  • UNRESOLVED:插件无法被解析。
  • UNINSTALLED:插件已经被卸载。

通过监听插件事件,开发者可以实时掌握插件的状态变化,并进行相应的处理。        

        服务事件

服务事件主要涉及服务的注册、注销和属性变化等。常见的服务事件包括:

  • REGISTERED:服务已经被注册。
  • MODIFIED:已注册服务的属性被修改。
  • MODIFIED_ENDMATCH:已注册服务的属性已被修改,并且新属性不再与侦听器的筛选器匹配。
  • UNREGISTERING:此服务正在注销过程中。

通过监听服务事件,开发者可以了解到服务的生命周期状态,并在必要时采取相应的措施。

2.监听接口

主要是ctkPluginContext提供的六个函数:

class CTK_PLUGINFW_EXPORT ctkPluginContext
{//...public:bool connectPluginListener(const QObject* receiver, const char* slot, Qt::ConnectionType type = Qt::QueuedConnection);void disconnectPluginListener(const QObject* receiver, const char* slot = 0);bool connectFrameworkListener(const QObject* receiver, const char* slot, Qt::ConnectionType type = Qt::QueuedConnection);void disconnectFrameworkListener(const QObject* receiver, const char* slot = 0);void connectServiceListener(QObject* receiver, const char* slot,const QString& filter = QString());void disconnectServiceListener(QObject* receiver, const char* slot);//...
};

        在CTK框架中,事件监听通常通过实现相应的监听器接口并在适当的时机注册监听器来实现。监听器可以通过框架提供的接口(如ctkPluginContext)连接到事件源,以便在事件发生时接收到通知。

        此外,CTK框架还支持通过ctkEventAdmin服务进行事件发布和订阅,这是一种更加灵活和强大的事件通信方式。通过ctkEventAdmin,开发者可以定义自定义事件并控制事件的发送和接收。

3.具体实现

以下是一个简单的示例,展示了如何在CTK框架中注册事件监听器:

#include <QObject>  
#include <ctkPluginFrameworkEvent.h>  
#include <ctkPluginEvent.h>  
#include <ctkServiceEvent.h>  class EventListener : public QObject {  Q_OBJECT  public:  explicit EventListener(ctkPluginContext* context, QObject *parent = nullptr);  public slots:  void onFrameworkEvent(const ctkPluginFrameworkEvent &event);  void onPluginEvent(const ctkPluginEvent &event);  void onServiceEvent(const ctkServiceEvent &event);  
};  EventListener::EventListener(ctkPluginContext* context, QObject *parent) : QObject(parent) {  // 假设已有ctkPluginContext *context可用  context->connectFrameworkListener(this, SLOT(onFrameworkEvent(ctkPluginFrameworkEvent)));  context->connectPluginListener(this, SLOT(onPluginEvent(ctkPluginEvent)));  context->connectServiceListener(this, SLOT(onServiceEvent(ctkServiceEvent)));  
}  void EventListener::onFrameworkEvent(const ctkPluginFrameworkEvent &event) {  // 处理框架事件  if (!event.isNull()) {QSharedPointer<ctkPlugin> plugin = event.getPlugin();std::cout << "FrameworkEvent: [" << plugin->getSymbolicName().toStdString() << "]"<< event.getType() << event.getErrorString().toStdString() << std::endl;} else {std::cout  << "The framework event is null" << std::endl;}
}  void EventListener::onPluginEvent(const ctkPluginEvent &event) {  // 处理插件事件 if (!event.isNull()) {QSharedPointer<ctkPlugin> plugin = event.getPlugin();std::cout << "PluginEvent: [" << plugin->getSymbolicName().toStdString() << "]"<< event.getType() << std::endl;} else {std::cout  << "The plugin event is null" << std::endl;}
}  void EventListener::onServiceEvent(const ctkServiceEvent &event) {  // 处理服务事件  if (!event.isNull()) {ctkServiceReference ref = event.getServiceReference();QSharedPointer<ctkPlugin> plugin = ref.getPlugin();for(const auto &pluginD : ref.getUsingPlugins()){std::cout << "ServiceEvent: [" << plugin->getSymbolicName().toStdString() << "]"<< event.getType() << pluginD->getSymbolicName().toStdString() << std::endl;}} else {std::cout  << "The service event is null" << std::endl;}
}

将监听在main函数中加上

// 事件监听
EventListener listener(pluginContext);

之后运行代码即可监听到对应的信息。

http://www.yidumall.com/news/52693.html

相关文章:

  • 乌市地区建设工程门户网站seodao cn
  • 潍坊网站制作网络营销推广活动有哪些
  • java网站开发流程网络营销的收获与体会
  • 什么网站做家具外贸好呢关键词快速排名不限行业
  • 网站首页的布局网站测速
  • 访问网站提示输入用户名密码最好看免费观看高清大全
  • 怎么在企查查网站做企业认证廊坊今日头条新闻
  • wordpress 本地建站快速排名教程
  • 威海建设局官方网站软文素材网站
  • 免费做公司网站免费网站或软件
  • 做网站域名需哪些体育新闻最新消息
  • 软件开发人工收费标准系统优化工具
  • 广州市建设局官方网站网上推广培训
  • 山西做二级建筑资料在哪个网站搜索引擎优化的作用
  • 网站建设公司如何开拓客户谷歌搜索网址
  • 网站开发在哪个科目核算发帖子的网站
  • 个人简介干净短句优化营商环境心得体会个人
  • 网站图片是用什么软件做的杭州百度seo优化
  • 不会编程如何做自己的网站自助建站系统
  • 咋样着做自己的网站本周新闻热点事件
  • 建站之星做出的网站不安全全球搜索引擎排行榜
  • 秦皇岛可优网络有限公司河南网站推广优化
  • 长安网站建设搭建一个网站平台需要多少钱
  • 国外做网站公司能赚钱唐山建站公司模板
  • 专业做网站的公司哪家好网络营销讲师
  • 广西壮族自治区有几个市网站排名优化服务公司
  • 做招聘网站的怎么引流求职者网页模板免费html
  • 网络营销与网站推广的广州各区风险区域最新动态
  • wordpress门户风水东莞网站seo公司哪家大
  • 那个网站可以做logo方象科技的服务范围