bool CroppingLabel::eventFilter(QObject *obj, QEvent *e) { // catch paint events if needed if (obj == this) { if (e->type() == QEvent::Paint && blockPaintEvents) return true; } // events fired by the QLineEdit if (obj == textEdit) { if (!textEdit->isVisible()) return false; if (e->type() == QEvent::KeyPress) { QKeyEvent* keyEvent = static_cast<QKeyEvent*>(e); if (keyEvent->key() == Qt::Key_Return) hideTextEdit(true); if (keyEvent->key() == Qt::Key_Escape) hideTextEdit(false); } if (e->type() == QEvent::FocusOut) hideTextEdit(true); } return false; }
void CroppingLabel::editingFinished() { hideTextEdit(); QString newText = textEdit->text().trimmed().remove(QRegExp("[\\t\\n\\v\\f\\r\\x0000]")); if (origText != newText) emit editFinished(textEdit->text()); emit editRemoved(); }