寻常键盘事件是捕获不到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); //将事件交给上层对话框
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。