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

广东网站建设案例凡科网模板

广东网站建设案例,凡科网模板,好业宝微商城,乐陵森一、事件处理过程 众所周知 Qt 是一个基于 C 的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。 我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序…

一、事件处理过程

众所周知 Qt 是一个基于 C++ 的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。
我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高的)。所以在Qt 框架内部为我们提供了一些列的事件处理机制,当窗口事件产生之后,事件会经过: 事件派发 -> 事件过滤 -> 事件分发 -> 事件处理 几个阶段。 Qt 窗口中对于产生的一系列事件都有默认的处理动作,如果我们有特殊需求就需要在合适的阶段重写事件的处理动作,
比如信号与槽就是一种
事件( event )是由系统或者 Qt 本身在不同的场景下发出的。当用户按下 / 移动鼠标、敲下键盘,或者是窗口关闭/ 大小发生变化 / 隐藏或显示都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如鼠标/ 键盘事件等;另一些事件则是由系统自动发出,如计时器事件。
每一个 Qt 应用程序都对应一个唯一的 QApplication 应用程序对象,然后调用这个对象的 exec()
数,这样 Qt 框架内部的事件检测就开始了( 程序将进入事件循环来监听应用程序的事件 )。
int main ( int argc , char * argv [])
{
        QApplication a ( argc , argv );
        MainWindow * w = new MainWindow ;
        w . show ();
        return a . exec ();
}
事件在 Qt 中产生之后的分发过程是这样的:
1. 当事件产生之后, Qt 使用用应用程序对象调用 notify() 函数将事件发送到指定的窗口:
[ override virtual ] bool QApplication::notify ( QObject * receiver , QEvent * e );

 2. 事件在发送过程中可以通过事件过滤器进行过滤,默认不对任何产生的事件进行过滤。

// 需要先给窗口安装过滤器 , 该事件才会触发
[ virtual ] bool QObject::eventFilter ( QObject * watched , QEvent * event )

3. 当事件发送到指定窗口之后,窗口的事件分发器会对收到的事件进行分类 

[ override virtual protected ] bool QWidget::event ( QEvent * event );
4. 事件分发器会将分类之后的事件(鼠标事件、键盘事件、绘图事件。。。)分发给对应的事件处理器函数进行处理,每个事件处理器函数都有默认的处理动作(我们也可以重写这些事件处理器函
数),比如:鼠标事件:
// 鼠标按下
[ virtual protected ] void QWidget::mousePressEvent ( QMouseEvent * event );
// 鼠标释放
[ virtual protected ] void QWidget::mouseReleaseEvent ( QMouseEvent * event );
// 鼠标移动
[ virtual protected ] void QWidget::mouseMoveEvent ( QMouseEvent * event );

二、重写事件案例

程序关闭之前的询问,鼠标进入,鼠标离开,窗口大小改变

 widget.h中代码

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
protected:void enterEvent(QEvent *event) override;void leaveEvent(QEvent *event) override;void wheelEvent(QWheelEvent *event) override;void resizeEvent(QResizeEvent *event) override;
private:Ui::Widget *ui;
};
#endif // WIDGET_H

  widget.cpp中代码

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <qevent.h>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::enterEvent(QEvent *event)
{qDebug() << "mouse enter";
}void Widget::leaveEvent(QEvent *event)
{qDebug() << "mouse leave";
}void Widget::wheelEvent(QWheelEvent *event)
{qDebug()<<event->angleDelta().y();
}void Widget::resizeEvent(QResizeEvent *event)
{qDebug() << "oldSize:" << event->oldSize()<< "newSize:" << event->size();
}

http://www.yayakq.cn/news/347187/

相关文章:

  • 嘉兴企业网站建设推广工程公司的经营范围有哪些
  • 做胎儿羊水鉴定网站成都私人放款联系方式电话
  • 网站建设项目背景网络管理员证书含金量
  • 吉浦网站建设北京华兴森茂印刷网站建设项目
  • 网站备案去哪注销重庆建设工程证照查询网站
  • 高企达建设公司网站重庆装修公司哪家好十大排名
  • 台州做网站seo网站开发工程师月薪平均
  • 做网站的傻瓜软件广州冼村为什么叫土豪村
  • 安阳企业网站建设公司在国外做黄皮网站违法么
  • html5素材网站网络文学网站开发
  • 如何做网站进行推广淘宝网站建设可信吗
  • 百度上开个网站怎么做装修网站设计案例
  • 上海网站建设排名搜索引擎网络推广方法
  • 台州做网站是什么做定制旅游最好的网站
  • 网站权限配置宿迁做网站公司哪家好
  • 虚拟产品货源网站电子商务网站总体规划的内容
  • 在线安装软件网站开发全球营销策划公司排名
  • 毕节城乡建设厅网站网站网络营销
  • 竭诚网络网站建设价格站长之家域名信息查询
  • 专业网站建设特点分析电子商务网站建设技术方案
  • 福永附近做网站公司中国企业信息
  • 网站推广营销的步骤上海网站注销吗
  • 服务器网站建设流程集团简介ppt优秀范例
  • 建设银行 网站无法打开厦门网站建设设
  • 用ps做的网站样图怎么切六盘水网站建设
  • 后台网站如何建设福田瑞沃自卸车
  • 购物网站项目介绍app直链在线生成
  • 科技网站欣赏馆陶专业做网站
  • 当当网站建设目标网站建设按什么合同交印花税
  • dede 汽车网站模板网页布局设计主要有什么类型