QLineEdit中的自定义占位符

Deu*_*che 1 c++ qt qlineedit qtwidgets

我希望有一个QLineEdit特定的占位符文本格式:它需要左对齐和右对齐文本.这是一个例子:

例

有任何想法吗?

lpa*_*app 5

不幸的是,这似乎是所有硬编码void QLineEdit::paintEvent(QPaintEvent *)如下:

if (d->shouldShowPlaceholderText()) {
    if (!d->placeholderText.isEmpty()) {
        QColor col = pal.text().color();
        col.setAlpha(128);
        QPen oldpen = p.pen();
        p.setPen(col);
        QRect ph = lineRect.adjusted(minLB, 0, 0, 0);
        QString elidedText = fm.elidedText(d->placeholderText, Qt::ElideRight, ph.width());
        p.drawText(ph, va, elidedText);
        p.setPen(oldpen);
    }    
}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以在子类中自行重新实现.

当然,你也可以用空间和字体大小"欺骗",但这需要更多的工作,最终也会更糟糕,更不用说长期的可靠性了.

您也可以为Qt项目做出贡献,使这个课程更加灵活,但他们可以拒绝它,理由是不够常见.这取决于维护者.