码迷,mamicode.com
首页 > 其他好文 > 详细

利用installEventFilter安装全局事件过滤器

时间:2020-06-21 14:18:17      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:creat   filename   完成   find   nec   return   win   ext   lease   

 

www.qt-ui.com 原创技术文章

当我们需要处理窗口以外的全局键盘和鼠标事件的时候,我们可以通过installEventFilter在QApplication上安装事件过滤器来进行处理。

调用示例如下:

UIGQtPOSLogin::UIGQtPOSLogin(QWidget *parent)
    : UIGQtLib::UIGQWindow(parent)
{
    UIGQtLib::uigCreatePageByFileName(this, "LoginPage.json");

    _closeBtn = findChild<UIGQtLib::UIGQPushButton*>("btnLogin");
    _editUser = findChild<UIGQtLib::UIGQLineEdit*>("editUser");

    _editUser->setTextMargins(20, 0, 20, 0);

    connect(_closeBtn, SIGNAL(clicked()), this, SLOT(BtnClicked()));

    setWindowFlag(Qt::FramelessWindowHint);

    QApplication::instance()->installEventFilter(this);
}

这里我们利用QApplication::instance()->installEventFilter(this);完成了全局过滤器的安装。

然后我们实现一下eventFilter,来接收全局的事件消息。

bool UIGQtPOSLogin::eventFilter(QObject * pObject, QEvent * pEvent)
{
    if (pEvent->type() == QEvent::KeyRelease)
    {
        QKeyEvent* pKeyEvt = (QKeyEvent*)pEvent;

        int key = pKeyEvt->key();

        ...
    }

    return UIGQtLib::UIGQWindow::eventFilter(pObject, pEvent);
}

 

 

技术图片

 

更多详情请浏览

www.qt-ui.com

www.qt-ui.com.cn

 

利用installEventFilter安装全局事件过滤器

标签:creat   filename   完成   find   nec   return   win   ext   lease   

原文地址:https://www.cnblogs.com/Qt-UI/p/13171925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!