diff options
Diffstat (limited to 'src/widgets/widgets/qtextedit.cpp')
-rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index 4b3bf6de65..4e0c682493 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -773,6 +773,35 @@ QTextDocument *QTextEdit::document() const } /*! + \since 5.2 + + \property QTextEdit::placeholderText + \brief the editor placeholder text + + Setting this property makes the editor display a grayed-out + placeholder text as long as the document() is empty. + + By default, this property contains an empty string. + + \sa document() +*/ +QString QTextEdit::placeholderText() const +{ + Q_D(const QTextEdit); + return d->placeholderText; +} + +void QTextEdit::setPlaceholderText(const QString &placeholderText) +{ + Q_D(QTextEdit); + if (d->placeholderText != placeholderText) { + d->placeholderText = placeholderText; + if (d->control->document()->isEmpty()) + d->viewport->update(); + } +} + +/*! Sets the visible \a cursor. */ void QTextEdit::setTextCursor(const QTextCursor &cursor) @@ -1499,6 +1528,13 @@ void QTextEdit::paintEvent(QPaintEvent *e) Q_D(QTextEdit); QPainter p(d->viewport); d->paint(&p, e); + if (!d->placeholderText.isEmpty() && d->control->document()->isEmpty()) { + QColor col = palette().text().color(); + col.setAlpha(128); + p.setPen(col); + const int margin = int(document()->documentMargin()); + p.drawText(d->viewport->rect().adjusted(margin, margin, -margin, -margin), Qt::AlignTop | Qt::TextWordWrap, d->placeholderText); + } } void QTextEditPrivate::_q_currentCharFormatChanged(const QTextCharFormat &fmt) |