Qt笔记_事件

45 篇文章 0 订阅

事件


Qt中使用一个对象表示一个事件,继承自QEvent类。任何QObject子类实例都可以接收和处理事件。

事件的处理

QCoreApplication类的notify()函数给出了5种处理事件的方法。

  • 方法一、最常用。重新实现部件的paintEvent()、mousePressEvent()等事件处理函数。只能用来处理特定部件的特定事件。
  • 方法二、需要继承QApplication类。重新实现notify()函数。提供完全控制,可以再事件过滤器得到事件之前就获得它们。一次只能处理一个事件。
  • 方法三、向QApplication对象上安装事件过滤器。相对方法二,可以处理多个事件。但是会减缓事件的传递。
  • 方法四、重新实现event()函数。QObject类的event()函数可以在事件到达默认的事件处理函数之前获得该事件。
  • 方法五、较常用。在对象上安装事件过滤器。使用事件过滤器可以在一个界面类中同时处理不同子部件的不同事件。

鼠标事件

QMouseEvent类用来表示一个鼠标事件。
QWheelEvent类用来表示鼠标滚轮事件。
常用函数:

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void wheelEvent(QWheelEvent *event);

在mouseMoveEvent()中要使用event->buttons()

键盘事件

QKeyEvent类用来描述键盘事件。
key()函数可以获取具体的按键。
回车键是Qt::Key_Return;
修饰键ctrl、shift要用modifiers()函数来获取。

定时器事件

QTimeEvent类用来描述一个定时器事件。
QTimer类更常用。
函数singleShot()函数用来开启只运行一次的定时器。

QTimer::singleShot(10000,this,&Widget::close);

随机数

使用qrand()函数时,要使用qsrand()函数来设置初值。

事件过滤器

用来在一个部件中监控其他多个部件的的事件。不是一个类,只用两个函数installEventFillter()和eventFilter(),都是QObject类中的函数。
配合判断使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值