Qt

您所在的位置:网站首页 mousetrackingchange Qt

Qt

#Qt| 来源: 网络整理| 查看: 265

事件(event)是由系统或者Qt本身在不同时刻发出的。当用户按下鼠标、敲下键盘,或者其它情况时候都会发出一个相应的事件。一些事件在对用户操作做出相应时发出,如键盘事件等;另外一些则是由系统自动发出,如计时事件等。

Qt程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始Qt的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件,当事件发生时,Qt将创建一个事件对象。Qt中所有事件类都继承自QEvent。在事件对象创建完毕之后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给指定的事件处理函数(event handler)进行处理。

事件处理函数一般都是虚函数,都可以在子类中重写

QWidget事件 1. 鼠标事件

首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheelEvent来处理。

QMouseEvent类包含了用于描述鼠标事件的参数。

当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。

鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidget::setMouseTracking()函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的Qt鼠标事件;

在一个窗口中,当鼠标按键被按下时,Qt会自动捕捉鼠标轨迹,鼠标所在的窗口会继续接受鼠标事件,直到最后一个鼠标按键被释放。

需要对鼠标事件进行处理时,通常要重新实现以下几个鼠标事件处理函数

事件处理

鼠标事件使用的时候,加头文件

#include

 

1.1 鼠标按下事件 void Widget::mousePressEvent(QMouseEvent *event) {   // 如果是鼠标左键按下   if(event->button() == Qt::LeftButton)   {       ···   }   // 如果是鼠标右键按下   else if(event->button() == Qt::RightButton)   {       ···   } }

 

1.2 鼠标移动事件

默认情况下,触发事件需要点击一下,才能触发。可设置为自动触发:setMouseTracking(true);

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); this->setMouseTracking(true);//设置默认追踪鼠标,否则在触发鼠标移动时,必须先点一下才有效 } void Widget::mouseMoveEvent(QMouseEvent *event) { //必须使用buttons()判断,鼠标当前所有状态都通过这个函数返回 if(event->buttons() & Qt::MouseButton::LeftButton) { qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3