fix CLineEdit read-only button

PIValueTreeEdit support PIValueTree::Attribute::toolTip
This commit is contained in:
2023-09-13 10:33:52 +03:00
parent c23c8703a4
commit 1a2f5ceefc
5 changed files with 41 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ CLineEdit::CLineEdit(QWidget * parent): QLineEdit(parent) {
cw->setToolTip(tr("Clear"));
cw->hide();
cw->installEventFilter(this);
connect(this, &QLineEdit::textChanged, this, &CLineEdit::textChangedSlot);
connect(this, &QLineEdit::textChanged, this, &CLineEdit::textChangedInternal);
int is = fontHeight(this);
QMargins m = textMargins();
m.setRight(m.right() + (is * 1.2));
@@ -26,6 +26,20 @@ CLineEdit::~CLineEdit() {
}
void CLineEdit::setReadOnly(bool yes) {
QLineEdit::setReadOnly(yes);
textChangedInternal();
}
void CLineEdit::clearClick() {
if (!isEnabled()) return;
setText(dt);
emit cleared();
emit textEdited(dt);
}
bool CLineEdit::eventFilter(QObject * o, QEvent * e) {
switch (e->type()) {
case QEvent::MouseButtonRelease: clearMouseRelease(static_cast<QMouseEvent *>(e)); break;
@@ -67,7 +81,7 @@ void CLineEdit::setDefaultText(const QString & t, bool set_text) {
cw->hide();
return;
}
textChangedSlot(text());
textChangedInternal();
}
@@ -78,6 +92,6 @@ void CLineEdit::clearMouseRelease(QMouseEvent * e) {
}
void CLineEdit::textChangedSlot(QString text) {
cw->setVisible(text != dt);
void CLineEdit::textChangedInternal() {
cw->setVisible((text() != dt) && !isReadOnly());
}

View File

@@ -34,14 +34,10 @@ public:
~CLineEdit() override;
const QString & defaultText() const { return dt; }
void setReadOnly(bool yes);
public slots:
void clearClick() {
if (!isEnabled()) return;
setText(dt);
emit cleared();
emit textEdited(dt);
}
void clearClick();
void setDefaultText(const QString & t, bool set_text = false);
signals:
@@ -49,7 +45,7 @@ signals:
private slots:
void clearMouseRelease(QMouseEvent * e);
void textChangedSlot(QString text);
void textChangedInternal();
private:
bool eventFilter(QObject * o, QEvent * e) override;