gpt4 book ai didi

c++ - 在 QLineEdit 中更改占位符文本的颜色

转载 作者:太空狗 更新时间:2023-10-29 19:41:41 24 4
gpt4 key购买 nike

当我使用 QLineEdit::setPlaceholderText() 设置占位符文本时,它显示为灰色。

enter image description here

有什么方法可以将颜色更改为其他颜色,例如红色?

最佳答案

您必须继承 QLineEdit 并在 paintEvent() 中绘制您自己的占位符。

class CustomColorPlaceholderLineEdit : public QLineEdit
{
public:
CustomColorPlaceholderLineEdit(QWidget * parent = 0) : QLineEdit(parent) { color = QColor(0,0,0,128); }
void setCustomPlaceholderText(const QString &text) { this->mText = text; }
const QString &customPlaceholderText() const { return mText; }
void setCustomPlaceholderColor(const QColor &color) { this->color = color; }
const QColor &customPlaceholderColor() const { return color; }
void paintEvent(QPaintEvent *event) {
QLineEdit::paintEvent(event);
if (!hasFocus() && text().isEmpty() && !mText.isEmpty()) {
// QLineEdit's own placeholder clashes with ours.
Q_ASSERT(placeholderText().isEmpty());
QPainter p(this);
p.setPen(color);
QFontMetrics fm = fontMetrics();
int minLB = qMax(0, -fm.minLeftBearing());
QRect lineRect = this->rect();
QRect ph = lineRect.adjusted(minLB + 3, 0, 0, 0);
QString elidedText = fm.elidedText(mText, Qt::ElideRight, ph.width());
p.drawText(ph, Qt::AlignVCenter, elidedText);
}
}
private:
QString mText;
QColor color;
};

关于c++ - 在 QLineEdit 中更改占位符文本的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27224211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com