-
鼠标事件
鼠标事件包含鼠标移动、鼠标键按下、松开、单击和双击等。
使用的时候要包含头文件<QMouseEvent>
鼠标的移动事件响应,通过重定义mouseMoveEvent(QMouseEvent *e)
函数实现e->x();e->y(); // 获取鼠标的相对位置
鼠标的按下事件响应,通过重定义
mousePressEvent(QMouseEvent *e)
函数实现if(e->button()==Qt::LeftButton) // Qt::RightButton 右键 Qt::MidButton中键 { statusBar()->showMessage(tr("左键:")+str); }
鼠标的松开事件响应,通过重定义
mouseReleaseEvent(QMouseEvent *e)
函数实现
鼠标的双击事件响应,通过重定义mouseDoubleClickEvent(QMouseEvent *e)
函数实现
this->setMouseTracking(true);
// 窗体追踪鼠标。true为追踪,false为不追踪 -
键盘事件
使用的时候要包含头文件
<QKeyEvent>
通过重定义keyPressEvent(QKeyEvent *)
和keyReleaseEvent(QKeyEvent *)
实现// Qt::KeyboardModifier定义的一系列修饰键 // Qt::ControlModifier 【Ctrl】键 // Qt::NoModifier 没有修饰键 // Qt::AltModifier 【Alt】键 // Qt::MetaModifier Meta键,一般Linux键盘上有 // Qt::KeypadModifier 小键盘按键 if(event->modifiers()==Qt::ControlModifier) { if(event->key()==Qt::Key_Left) // 组合件Ctrl+左键的组合键 { } } else //对【Ctrl】键没有按下的处理 { if(event->key()==Qt::Key_Left) { } }
-
事件过滤
主要函数,函数原型void QObject::installEventFilter(QObject * filterObj);// 增加事件过滤 void QObject::removeEventFilter(QObject * filterObj); // 移除事件过滤 bool eventFilter(QObject *watched, QEvent *event); // 事件过滤函数,如果过滤了则返回true,否则返回false
示例
// 增加过滤事件 label1->installEventFilter(this); label2->installEventFilter(this); label3->installEventFilter(this); // 事件过滤函数 bool EventFilter::eventFilter(QObject *watched, QEvent *event) { if(watched==label1) //首先判断当前发生事件的对象 { // 判断发生的事件类型 if(event->type()==QEvent::MouseButtonPress) { // 将事件event转化为鼠标事件 QMouseEvent *mouseEvent=(QMouseEvent *)event; /* 以下根据鼠标的按键类型分别显示 */ if(mouseEvent->buttons()&Qt::LeftButton) { stateLabel->setText(tr("左键按下左边图片")); } else if(mouseEvent->buttons()&Qt::MidButton) { stateLabel->setText(tr("中键按下左边图片")); } else if(mouseEvent->buttons()&Qt::RightButton) { stateLabel->setText(tr("右键按下左边图片")); } /* 显示缩小的图片 */ QMatrix matrix; matrix.scale(1.8,1.8); QImage tmpImg=Image1.transformed(matrix); label1->setPixmap(QPixmap::fromImage(tmpImg)); } /* 鼠标释放事件的处理,恢复图片的大小 */ if(event->type()==QEvent::MouseButtonRelease) { stateLabel->setText(tr("鼠标释放左边图片")); label1->setPixmap(QPixmap::fromImage(Image1)); } } ...... }
QT 事件处理
最新推荐文章于 2024-07-29 21:19:03 发布