Qt源码分析--QWidget(8)--Mouse and keyboard grabbing

本文详细介绍了Qt库中用于捕获和释放鼠标及键盘事件的相关函数,包括`grabMouse()`、`releaseMouse()`、`grabKeyboard()`、`releaseKeyboard()`。这些函数使得指定的QWidget能够独占鼠标和键盘输入,直到调用释放函数。当`qt_mouseGrb`或`keyboardGrb`被设置为特定的widget时,该widget将接收所有的鼠标或键盘事件,通过调用相应的`release...()`函数可以恢复正常的事件处理。

1.void grabMouse();

void QWidget::grabMouse()
{
    grabMouseForWidget(this);
}

#ifndef QT_NO_CURSOR
static void grabMouseForWidget(QWidget *widget, const QCursor *cursor = 0)
#else
static void grabMouseForWidget(QWidget *widget)
#endif
{
    if (qt_mouseGrb)
        qt_mouseGrb->releaseMouse();
    mouseGrabWithCursor = false;
    if (QWindow *window = grabberWindow(widget)) {
#ifndef QT_NO_CURSOR
        if (cursor) {
            mouseGrabWithCursor = true;
            QGuiApplication::setOverrideCursor(*cursor);
        }
#endif // !QT_NO_CURSOR
        window->setMouseGrabEnabled(true);
    }
    qt_mouseGrb = widget;
    qt_pressGrab = 0;
}

qt_mouseGrb设置为widget,此widget接收所有鼠标事件,直到调用releaseMouse()函数。

2.void

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天进步2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值