工作中遇到需要监测Enter事件的情况,需要在Enter事件发生后---即换行后插入一段文字,但是实际运行的过程中确实先插入文字,再发生Enter的换行事件,那么我们需要过滤掉这个事件的影响
bool CustomTextEdit::eventFilter(QObject* target, QEvent* event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) {
QTextCursor cursor = this->textCursor();
if (isNumberingFlag) {
cursor.insertText(QString("\n"));//这里是实际换行
//插入一段文字
return true;//! 过滤掉enter的效果
}
}
}
// 其他事件继续传递给基类
return QWidget::eventFilter(target, event);
}
记得要在构造函数中install这个事件过滤器