蛋疼的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(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);      //将事件交给上层对话框
    }
}

你可能感兴趣的:(蛋疼的QT Tab键捕获)