寻常键盘事件是捕获不到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); //将事件交给上层对话框
}
}