Qt 事件机制

Qt 应用程序的事件循环始于main函数中的exec()函数 如:QApplication::exec()、QDialog::exec()、QMenu::exec()
在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt 中所有事件类都继承于QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。

鼠标事件

    void mousePressEvent(QMouseEvent *event);        //单击
    void mouseReleaseEvent(QMouseEvent *event);      //释放
    void mouseDoubleClickEvent(QMouseEvent *event);  //双击
    void mouseMoveEvent(QMouseEvent *event);         //移动
    void wheelEvent(QWheelEvent *event);             //滑轮

用法1:

以下函数须在头文件中声明

void Widget::mousePressEvent(QMouseEvent *e)
{
    if(e->button()==Qt::LeftButton){  //左键按下
        label->setText("left mousePressed!");
    }else if(e->button() == Qt::RightButton){  //右键按下
        label->setText("right mousePressed!");
    }
}

void Widget::mouseMoveEvent(QMouseEvent *e)   //鼠标左键或者右键按下并且移动
{
      label->setText("mouseMoving!");
}

void Widget::mouseReleaseEvent(QMouseEvent *e) 
{
    if(e->button()==Qt::LeftButton){
        label->setText("left mouseReleased!");  //左键抬起
    }else if(e->button() == Qt::RightButton){
        label->setText("right mouseReleased!"); //右键抬起
    }
}

void Widget::mouseDoubleClickEvent(QMouseEvent *e)
{
    // label->setText("mouseDoubleClickEvent!");
}

键盘事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值