QT基础:事件

什么是事件?

事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。

GUI应用程序是由事件(event)来驱动的。例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。

常见事件:鼠标事件(例如点击一下鼠标左键)、键盘事件(例如按下键盘的某个键)、定时事件、上下文菜单事件、关闭事件、拖放事件、绘制事件。

在QT官方的文档中枚举了各种各样的事件

既然事件发生了,那么我们就需要对一个事件进行处理,就像我们点击了一下鼠标左键,程序就给了我们反馈一样,那么我们通过什么来对事件进行处理呢?

事件的处理

通过文档我们可以看到,在QWidget类中提供了很多等待我们在子类中重写的虚函数,通常,我们通过重写这些函数来处理一些特定部件的典型事件。

当然,我们也可以通过在对象上安装事件过滤器。使用事件过滤器可以在一个界面类中同时处理不同子部件的不同事件。

下面我们来尝试通过鼠标事件实时显示鼠标的坐标

 在Widget.h文件中选中class Widget右键选择添加虚函数

在这里我们勾选我们想要重写的虚函数

注意此时还要在头文件中添加QMouseEvent头文件

在Ui文件中放置一个label起名为labelmove用来显示坐标的移动

void Widget::mousePressEvent(QMouseEvent *event)
{
    if(event->button()!=Qt::LeftButton)
    {
        return;//如果按下的不是鼠标左键就直接返回
    }
    QPoint pt =event->pos();//pt用来获取鼠标相对Widget的位置(以widget框左上角为(0,0)点)

    QString str=QString::asprintf("pos()=(%d,%d)",pt.x(),pt.y());



    ui->labelmove->setText(str);
    ui->labelmove->adjustSize();//调整标签的size
    ui->labelmove->move(event->pos());//移动显示标签到新的坐标


    QWidget::mousePressEvent(event);
}

实现虚函数的重写

运行效果演示

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值