diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 3cdd7dc0f0..5e88c2034a 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1745,9 +1745,14 @@ void QLineEdit::inputMethodEvent(QInputMethodEvent *e) #endif } +QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const +{ + return inputMethodQuery(property, QVariant()); +} + /*!\reimp */ -QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const +QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const { Q_D(const QLineEdit); switch(property) { @@ -1755,8 +1760,11 @@ QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const return d->cursorRect(); case Qt::ImFont: return font(); - case Qt::ImCursorPosition: - return QVariant(d->control->cursor()); + case Qt::ImCursorPosition: { + const QPointF pt = argument.toPointF(); + if (!pt.isNull()) + return QVariant(d->xToPos(pt.x(), QTextLine::CursorBetweenCharacters)); + return QVariant(d->control->cursor()); } case Qt::ImSurroundingText: return QVariant(d->control->text()); case Qt::ImCurrentSelection: diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h index 6a24daa873..12fd998c45 100644 --- a/src/widgets/widgets/qlineedit.h +++ b/src/widgets/widgets/qlineedit.h @@ -228,6 +228,7 @@ protected: void initStyleOption(QStyleOptionFrame *option) const; public: QVariant inputMethodQuery(Qt::InputMethodQuery) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; bool event(QEvent *) Q_DECL_OVERRIDE; protected: QRect cursorRect() const;