蛋疼的QT Tab键捕获

寻常键盘事件是捕获不到Tab键的,会被窗口焦点优先捕获走

这样是捕获不到Tab的

void TextEdit::keyPressEvent(QKeyEvent * event)
{
    

    if (event->key() == Qt::Key_Tab)
    {   
        //qDebug() << "AAA";
        QMessageBox::information(NULL, "Title", "AAAAA");
    
}

需要这样,才能捕获到Tab

editor = new QPlainTextEdit();
editor->installEventFilter(this);
bool TextEdit::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == editor)
    {
        if (event->type() == QEvent::KeyPress)
        {
            QKeyEvent *ke = static_cast<QKeyEvent*>(event);
            if (ke->key() == Qt::Key_Tab)
            {
                QMessageBox::information(NULL, "Title", "AAAAA");
                return true;        //该事件已经被处理
            }
            return false;
        }
        else
        {
            return false;       //如果是其他事件可以进一步处理
        }
    }
    else
    {
        return TextEdit::eventFilter(obj, event);      //将事件交给上层对话框
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,556评论 1 11
  • Windows 常用消息大全 表A-1 Windows消息分布 消息范围说 明 0 ~ WM_USER – 1系统...
    北风知我意阅读 2,115评论 0 0
  • Win10系列——windows窗口 随着个人计算机(PC)普及,windows操作系统占据了市场大部分份额。令人...
    简_道之根_易_经之本阅读 9,325评论 0 1
  • 本节介绍各种常见的浏览器事件。 鼠标事件 鼠标事件指与鼠标相关的事件,主要有以下一些。 click 事件,dblc...
    许先生__阅读 2,523评论 0 4
  • 今天很high,各种high,我也不知道为什么high,哈哈! 今天的图 有感觉到风吗?
    懒猫物语阅读 125评论 1 1