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

微网站开发 mui框架asp.net网站开发流程及相关工具

微网站开发 mui框架,asp.net网站开发流程及相关工具,网站第三方登录怎么做,国外对旅游网站的建设The Event System 在Qt中#xff0c;事件是继承了虚拟类QEvent的对象#xff0c;它代表了程序所发生的事情或者程序需要知道的一个外部活动的结果。事件可以被任意 QObject子类的实例接收和处理#xff0c;是与widgets密切相关。本文描述了在一个典型的程序中事件是如何被传…      The Event System 在Qt中事件是继承了虚拟类QEvent的对象它代表了程序所发生的事情或者程序需要知道的一个外部活动的结果。事件可以被任意 QObject子类的实例接收和处理是与widgets密切相关。本文描述了在一个典型的程序中事件是如何被传送和处理的。 How Events are Delivered 当发生一个事件Qt通过构造一个适当的 QEvent子类的实例来创建事件对象来代表它并通过调用vevent()函数把它传送到特定的 QObject 实例。 该函数本身不处理事件根据传送的事件类型它为特定的时间类型调用一个事件处理程序并根据事件是被接受或忽略发送一个响应。 一些事件如QMouseEvent 和 QKeyEvent来自windows系统。如QTimerEvent, 来自其他来源一些来自程序本身。 Event Types 大多数的事件类型有特别的类尤其是 QResizeEvent, QPaintEvent, QMouseEvent, QKeyEvent,andQCloseEvent. 它们都继承了QEvent 和添加了特殊的函数。如 QResizeEvent 添加了 size()和 oldSize()函数使得widgets 可以获得其改变的规模。 一些类支持多于一种实际的事件类型。 QMouseEvent 支持鼠标按下双击移动和其他相关操作。 每个事件都有一个定义在QEvent::Type的相关的类型它可以用作运行时的类型信息以快速确定事件对象是构造自哪个子类。 由于程序需要多种复杂的方式的响应Qt的事件传送机制也是灵活的。QCoreApplication::notify()文档对称进行了确切的描述。 Event Handlers 通常事件被传送的方法是调用一个虚函数。例如 QPaintEvent 通过调用 QWidget::paintEvent().而被传送。该虚函数复杂作出适当的响应通常是重绘widget。如果在你实现的虚函数里不能完成所需要的功能可以调用基类的实现。 例如下面的代码处理了自定义的checkbox 鼠标左键按下事件把其他按键按下的事件传送给基类QCheckBox  void MyCheckBox::mousePressEvent(QMouseEvent*event) {     if (event-button() Qt::LeftButton) {         // handle left mouse button here     } else {         // pass on other buttons to base class         QCheckBox::mousePressEvent(event);     } } 如果你想取代基类的函数你必须自己实现每件事。然而如果你只想扩展基类的功能你可以实现自己想实现的部分在任何你不想处理情况可以调用基类来获得默认的处理。 偶尔可能没有特定事件的函数或者特定事件的函数功能不充分。最常见的例子包含Tab 按下。通常 QWidget拦截事件来移动键盘焦点但是有的widget需要自己处理Tab 按下事件。 这些对象可以重新实现 QObject::event(),一般的事件处理程序可以在通常的事件处理之前或之后对它们的事件进行处理或者完全取代整个函数的。一个既拦截Tab 也有自定义事件的widget 可能包含以下的event() 函数 bool MyWidget::event(QEvent*event) {     if (event-type() QEvent::KeyPress) {     QKeyEvent*ke static_castQKeyEvent*(event);     if (ke-key() Qt::Key_Tab) {         // special tab handling here         returntrue;     }     } elseif (event-type() MyCustomEventType) {     MyCustomEvent *myEvent static_castMyCustomEvent *(event);     // custom event handling here     returntrue;     }       returnQWidget::event(event); } 我们注意到对于没有处理的所有情况都调用了QWidget::event() 而且返回值表明了事件是否被处理。返回值true阻止了事件被传递给其他对象。 Event Filters 有时一个对象需要检查并可能拦截被传送给其他对象的事件。例如对话框一般需要为一下widget过滤键盘按键事件。例如修改返回键处理。 QObject::installEventFilter()设置了eventfilter,在目标对象的QObject::eventFilter() 函数里接收事件。事件过滤器在目标对象之前处理事件根据需要允许对事件进行检查和丢弃。可以用 QObject::removeEventFilter()函数移除一个已经存在的事件过滤器。 当一个过滤器对象的eventFilter() 实现被调用它可以接受或不接受事件允许或拒绝更进一步的处理事件。如果所有的事件过滤器允许更进一步的处理事件事件将被发送给目标对象本身。如果其中某个事件停止处理目标对象和后面一些事件过滤器都接收不到该事件。 bool FilterObject::eventFilter(QObject*object,QEvent*event) {     if (object target event-type() QEvent::KeyPress) {         QKeyEvent*keyEvent static_castQKeyEvent*(event);         if (keyEvent-key() Qt::Key_Tab) {             // Special tab handling             returntrue;         } else             returnfalse;     }     returnfalse; } 以上代码演示了另一种拦截Tab按键事件并发送到特定目标widget的方法。在这种情况下事件过滤器处理了相关的事件并返回true阻止事件被进一步处理。其他的事件则被忽略事件过滤器返回false以允许它们被发送到目标widget通过任何已经安装的事件过滤器。 为整个程序过滤所有的事件也是可能的通过为 QApplication 或QCoreApplication 安装事件过滤器。这样的全局事件过滤器将会在特定对象的过滤器之前被调用。这很强大但是也会使得整个程序的事件发送变慢。 Sending Events 很多程序想创建和发送自己的事件。你可以用像Qt的事件循环一样的方法发送事件通过构造合适的事件对象并用QCoreApplication::sendEvent()和QCoreApplication::postEvent().发送事件。 sendEvent()立即处理事件。当它返回事件过滤器和对象本身已经处理了事件。对于很多事件类型有一个isAccepted()函数用来获取最近的处理过程事件是被接受还是不被接受。 postEvent()把事件传递到队列等待分发。下一次主事件循环运行它进行一些优化将分发所有的队列中的事件。例如有一些resize 事件将被压缩成一个事件。同样的应用与paint事件QWidget::update()调用 postEvent()它消除闪烁和增加速度以避免多次重绘。 postEvent()在对象初始化过程中也被用到因为发出的事件将在对象的初始化完成之后立即分发。当实现一个widget意识到事件可能在其生命期的早期被分发这很重要在其构造函数中确保在早期初始化成员变量在其有机会接收到事件之前。 要创建自定义的事件类型需要定义一个事件号必须大于 QEvent::User.
http://www.sadfv.cn/news/286100/

相关文章:

  • 外贸仿牌网站建设点击立即进入正能量网站
  • 方圆网站建设长垣建设银行网站
  • 模板和网站是一体的吗梧州网站设计制作服务至上
  • 沈阳网站建设定制wordpress打包成app
  • 网站短期就业培训班怎么做vip视频网站
  • 做网站的背景怎么做公司网站建设公
  • 给一个网站风格做定义广州专业展台制作价格
  • 网站主页 优帮云桂林象鼻山的由来
  • 网站如何建设推广微信分销网站建设官网
  • 武强网站建设WordPress微博图片
  • 专门做电子书的网站邢台做网站咨询
  • 微信支付 企业网站甘肃手机版建站系统价格
  • 什么网站可以做数据调查问卷嵌入式软件开发面试问题
  • 网站推广策划包含的内容电子商务网站规划流程
  • 黄岩区建设规划局网站国际贸易网登录
  • 常见的管理信息系统有哪些南昌网站排名优化
  • 校园网站建设 德育制作网站一般要多少钱
  • 网站建设总结体会域名备案需要多少钱
  • 重庆网站制作1000wordpress 站点标题
  • 宁波江北建设局网站qq代刷网站推广免费
  • 上海网站设计开发公WordPress建站怎么交付
  • 十大效果图网站微信crm管理系统
  • 网站建设找星火龙制作网站的固定成本
  • 广东网站备案多长时间wordpress 个人博客主题
  • 分类信息网站怎么做SEO公司网站建设工作总结
  • 商丘网站网站建设公司代理
  • 品牌网站建设 蝌4蚪小公司网站开发的核心技术
  • 吉林网站建设电话怎么才能免费建网站
  • 广州网站建设招聘做网站怎么弄模板
  • 强化 门户网站建设wordpress官网的文档