// QHintLineEdit.h #ifndef QHINTLINEEDIT_H
#define QHINTLINEEDIT_H
#include <QLineEdit>
#include <QPaintEvent>
#include <QPainter>
#include <QColor>
class QHintLineEdit : public QLineEdit
{
Q_OBJECT
public:
QHintLineEdit (QWidget *parent = 0);
void setTextHint (QString text);
void setColorHint (QColor color);
void setAlignmentHint (Qt::Alignment flag);
private:
QString hintText;
Qt::Alignment hintAlignment;
QColor hintColor;
void paintEvent(QPaintEvent *event);
};
#endif // QHINTLINEEDIT_H
//QHintLineEdit.cpp #include "QHintLineEdit.h"
QHintLineEdit::QHintLineEdit(QWidget *parent)
: QLineEdit(parent)
{
this->setAlignment(Qt::AlignCenter);
this->setAlignmentHint(Qt::AlignCenter);
this->setColorHint(Qt::lightGray);
this->setTextHint(NULL);
}
void QHintLineEdit::paintEvent(QPaintEvent *event)
{
if (text().isEmpty() && !hintText.isEmpty() && !hasFocus()){
QLineEdit::paintEvent(event);
QPainter painter(this);
QRect textRec = rect();
textRec.setLeft(textRec.left()+5);
painter.setPen(hintColor);
painter.drawText(textRec, hintAlignment, hintText);
} else QLineEdit::paintEvent(event);
}
void QHintLineEdit::setTextHint(QString text)
{
hintText = text;
}
void QHintLineEdit::setAlignmentHint(Qt::Alignment flag)
{
hintAlignment = flag;
}
void QHintLineEdit::setColorHint(QColor color)
{
hintColor = color;
}
|