From e43a259d108325b97d1932eba88001afc85293a5 Mon Sep 17 00:00:00 2001 From: deepin-ci-robot Date: Mon, 9 Feb 2026 07:08:39 +0000 Subject: [PATCH] sync: from linuxdeepin/dde-session-shell Synchronize source files from linuxdeepin/dde-session-shell. Source-pull-request: https://github.com/linuxdeepin/dde-session-shell/pull/56 --- src/widgets/dlineeditex.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/widgets/dlineeditex.cpp b/src/widgets/dlineeditex.cpp index ec011265..bc621620 100644 --- a/src/widgets/dlineeditex.cpp +++ b/src/widgets/dlineeditex.cpp @@ -146,7 +146,19 @@ void DLineEditEx::paintEvent(QPaintEvent *event) pa.setPen(col); QTextOption option; option.setAlignment(Qt::AlignCenter); - pa.drawText(rect(), lineEdit()->placeholderText(), option); + option.setWrapMode(QTextOption::NoWrap); + // 使用 elidedText 确保文本过长时在右侧显示省略号,而不是换行 + QFontMetrics fm(pa.font()); + const QString &placeholderText = lineEdit()->placeholderText(); + QString elidedText = fm.elidedText(placeholderText, Qt::ElideRight, rect().width()); + pa.drawText(rect(), Qt::AlignCenter | Qt::TextSingleLine, elidedText); + + // 当文本被省略时,设置 tooltip 显示完整文本 + if (elidedText != placeholderText) { + setToolTip(placeholderText); + } else { + setToolTip(QString()); + } } QWidget::paintEvent(event); }