git-svn-id: svn://db.shs.com.ru/libs@1 a8b55f48-bf90-11e4-a774-851b48703e85
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
#include "clineedit.h"
|
|
|
|
|
|
CLineEdit::CLineEdit(QWidget * parent): QLineEdit(parent) {
|
|
cw = new QWidget(this);
|
|
cw->setStyleSheet("background-image: url(:/icons/edit-clear-locationbar-rtl.png);");
|
|
cw->setCursor(Qt::ArrowCursor);
|
|
cw->setToolTip(tr("Clear"));
|
|
cw->hide();
|
|
cw->installEventFilter(this);
|
|
int m0, m1, m2, m3;
|
|
getTextMargins(&m0, &m1, &m2, &m3);
|
|
setTextMargins(m0, m1, m2 + 21, m3);
|
|
connect(this, SIGNAL(textChanged(QString)), this, SLOT(textChanged_(QString)));
|
|
//connect(cw, SIGNAL(mouseReleaseEvent(QMouseEvent * )), this, SLOT(clearMouseRelease(QMouseEvent * )));
|
|
}
|
|
|
|
|
|
bool CLineEdit::eventFilter(QObject * o, QEvent * e) {
|
|
if (e->type() == QEvent::MouseButtonRelease) {
|
|
clearMouseRelease((QMouseEvent * )e);
|
|
}
|
|
return QLineEdit::eventFilter(o, e);
|
|
}
|
|
|
|
|
|
void CLineEdit::resizeEvent(QResizeEvent * e) {
|
|
QLineEdit::resizeEvent(e);
|
|
cw->setGeometry(width() - 21, (height() - 17) / 2, 16, 16);
|
|
}
|
|
|
|
|
|
void CLineEdit::changeEvent(QEvent * e) {
|
|
if (e->type() == QEvent::LanguageChange) {
|
|
cw->setToolTip(tr("Clear"));
|
|
return;
|
|
}
|
|
QLineEdit::changeEvent(e);
|
|
}
|
|
|
|
|
|
void CLineEdit::setDefaultText(const QString & t, bool set_text) {
|
|
dt = t;
|
|
if (set_text) {
|
|
setText(t);
|
|
emit textEdited(t);
|
|
cw->hide();
|
|
return;
|
|
}
|
|
textChanged_(text());
|
|
}
|