Qt鼠标事件中的button()和buttons()

Qt鼠标事件中的button()和buttons()

QEvent类是所有事件类的基类,Qt的主事件回路从事件队列获取本地窗口系统事件,将其转换为QEvent,然后再传递给QObjects。创建鼠标事件,MyLabel继承自QLabel,声明如下:

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QWidget>
#include <QLabel>

class MyLabel : public QLabel
{
   
    Q_OBJECT
public:
    explicit MyLabel(QWidget *parent = nullptr);

    void enterEvent(QEvent *event);  // 鼠标进入
    void leaveEvent(QEvent *
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT,如果要实现父类控件把鼠标事件传给子控件,可以通过重载父类控件的`mousePressEvent`、`mouseReleaseEvent`、`mouseMoveEvent`等事件,在事件处理函数事件传递给子控件的事件处理函数。具体实现如下: ```cpp class ParentWidget : public QWidget { public: ParentWidget(QWidget* parent = nullptr) : QWidget(parent) { childWidget = new QWidget(this); } protected: void mousePressEvent(QMouseEvent* event) override { // 将事件传递给子控件 QMouseEvent newEvent(event->type(), event->localPos(), event->windowPos(), event->screenPos(), event->button(), event->buttons(), event->modifiers()); QApplication::sendEvent(childWidget, &newEvent); QWidget::mousePressEvent(event); } void mouseReleaseEvent(QMouseEvent* event) override { // 将事件传递给子控件 QMouseEvent newEvent(event->type(), event->localPos(), event->windowPos(), event->screenPos(), event->button(), event->buttons(), event->modifiers()); QApplication::sendEvent(childWidget, &newEvent); QWidget::mouseReleaseEvent(event); } void mouseMoveEvent(QMouseEvent* event) override { // 将事件传递给子控件 QMouseEvent newEvent(event->type(), event->localPos(), event->windowPos(), event->screenPos(), event->button(), event->buttons(), event->modifiers()); QApplication::sendEvent(childWidget, &newEvent); QWidget::mouseMoveEvent(event); } private: QWidget* childWidget; }; ``` 上述代码,`ParentWidget`是父类控件,`childWidget`是子控件。在重载鼠标事件处理函数,通过创建一个新的鼠标事件对象,并将事件对象传递给子控件的`sendEvent`函数,实现将鼠标事件传递给子控件的目的。注意,在转发事件之后,需要调用父类的对应事件处理函数,使得父类也能处理该事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值