git-svn-id: svn://db.shs.com.ru/libs@541 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-05-29 12:05:27 +00:00
parent bb75525a3b
commit 6c6cf8e9f6
2 changed files with 29 additions and 13 deletions

View File

@@ -4,6 +4,7 @@
#include <QDebug> #include <QDebug>
#include <QRegExp> #include <QRegExp>
#include <QPainter> #include <QPainter>
#include <QTimer>
#include <QStyle> #include <QStyle>
#include <QStyleOptionSpinBox> #include <QStyleOptionSpinBox>
#include "qad_types.h" #include "qad_types.h"
@@ -67,10 +68,15 @@ void EvalSpinBox::resizeIcons() {
QRect r = style()->subElementRect(QStyle::SE_LineEditContents, &so, lineEdit()); QRect r = style()->subElementRect(QStyle::SE_LineEditContents, &so, lineEdit());
int m0, m1, m2, m3; int m0, m1, m2, m3;
lineEdit()->getTextMargins(&m0, &m1, &m2, &m3); lineEdit()->getTextMargins(&m0, &m1, &m2, &m3);
label->setGeometry(m0 + r.x() + 2, m1 + r.y() + (r.height() - fontMetrics().height() + 1) / 2, lineEdit()->width() - 2*tm - (is * 1.2) * ((status->isVisible() ? 1 : 0) + (cw->isVisible() ? 1 : 0)), lineEdit()->height() - 2*tm); //label->setGeometry(m0 + r.x() + 2, m1 + r.y() + (r.height() - fontMetrics().height() + 1) / 2, lineEdit()->width() - 2*tm - (is * 1.2) * ((status->isVisible() ? 1 : 0) + (cw->isVisible() ? 1 : 0)), lineEdit()->height() - 2*tm);
int lwh = label->sizeHint().width();
label->setGeometry(lineEdit()->width() - m0 - lwh + r.x() - 2,
m1 + r.y() + (r.height() - fontMetrics().height() + 1) / 2,
lwh,// - 2*tm - (is * 1.2) * ((status->isVisible() ? 1 : 0) + (cw->isVisible() ? 1 : 0)),
lineEdit()->height() - 2*tm);
status->setGeometry(lineEdit()->width() - (is + tm) * (cw->isVisible() ? 2 : 1), tm, is, is); status->setGeometry(lineEdit()->width() - (is + tm) * (cw->isVisible() ? 2 : 1), tm, is, is);
cw->setGeometry(lineEdit()->width() - (is + tm) * 1, tm, is, is); cw->setGeometry(lineEdit()->width() - (is + tm) * 1, tm, is, is);
lineEdit()->setTextMargins(0, 0, (is * 1.2) * ((status->isVisible() ? 1 : 0) + (cw->isVisible() ? 1 : 0)), 0); lineEdit()->setTextMargins(m0, m1, (is * 1.2) * ((status->isVisible() ? 1 : 0) + (cw->isVisible() ? 1 : 0)), m3);
} }
@@ -158,19 +164,24 @@ void EvalSpinBox::setExpression_() {
// qDebug() << eval.expression(); // qDebug() << eval.expression();
} }
if (!label->isHidden()) { if (!label->isHidden()) {
// if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect())
// label->setText("<html><head/><body><p>" + eval.expression() + " <span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>");
// else
// label->setText(eval.expression());
if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect()) if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect())
label->setText("<html><head/><body><p>" + eval.expression() + " <span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>"); label->setText("<html><head/><body><p><span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>");
else label->setText(eval.expression()); else
label->setText("");
lineEdit()->blockSignals(true); lineEdit()->blockSignals(true);
if (!eval.isCorrect()) { if (!eval.isCorrect()) {
lineEdit()->setStyleSheet("color: darkred;"); lineEdit()->setStyleSheet("color: darkred;");
status->show(); status->show();
} else { } else {
lineEdit()->setStyleSheet("color: black;"); lineEdit()->setStyleSheet("");
status->hide(); status->hide();
} }
// lineEdit()->setText(eval.expression() + " -> " + QString::number(value(), 'G', 10)); // lineEdit()->setText(eval.expression() + " -> " + QString::number(value(), 'G', 10));
lineEdit()->setText(""); //lineEdit()->setText("");
lineEdit()->blockSignals(false); lineEdit()->blockSignals(false);
} }
@@ -213,7 +224,7 @@ double EvalSpinBox::value() const {
if (eval.isCorrect()) { if (eval.isCorrect()) {
return eval.lastResult().real(); return eval.lastResult().real();
} }
return 0; return 0.;
} }
@@ -244,8 +255,8 @@ void EvalSpinBox::focusInEvent(QFocusEvent * event) {
label->hide(); label->hide();
status->show(); status->show();
lineEdit()->blockSignals(true); lineEdit()->blockSignals(true);
lineEdit()->setStyleSheet("color: black;"); lineEdit()->setStyleSheet("");
if (eval.expression() != "0") lineEdit()->setText(eval.expression()); //if (eval.expression() != "0") lineEdit()->setText(eval.expression());
lineEdit()->blockSignals(false); lineEdit()->blockSignals(false);
QAbstractSpinBox::focusInEvent(event); QAbstractSpinBox::focusInEvent(event);
resizeIcons(); resizeIcons();
@@ -255,15 +266,20 @@ void EvalSpinBox::focusInEvent(QFocusEvent * event) {
void EvalSpinBox::focusOutEvent(QFocusEvent * event) { void EvalSpinBox::focusOutEvent(QFocusEvent * event) {
QAbstractSpinBox::focusOutEvent(event); QAbstractSpinBox::focusOutEvent(event);
// qDebug() << eval.expression() << QString::number(value(), 'G', 10); // qDebug() << eval.expression() << QString::number(value(), 'G', 10);
// if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect())
// label->setText("<html><head/><body><p>" + eval.expression() + " <span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>");
// else
// label->setText(eval.expression());
if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect()) if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect())
label->setText("<html><head/><body><p>" + eval.expression() + " <span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>"); label->setText("<html><head/><body><p><span style=\"color:#005500;\">-&gt; " + QString::number(value(), 'G', 10) + "</span></p></body></html>");
else label->setText(eval.expression()); else
label->setText("");
label->show(); label->show();
lineEdit()->blockSignals(true); lineEdit()->blockSignals(true);
if (!eval.isCorrect()) lineEdit()->setStyleSheet("color: darkred;"); if (!eval.isCorrect()) lineEdit()->setStyleSheet("color: darkred;");
else status->hide(); else status->hide();
// lineEdit()->setText(eval.expression() + " -> " + QString::number(value(), 'G', 10)); // lineEdit()->setText(eval.expression() + " -> " + QString::number(value(), 'G', 10));
lineEdit()->clear(); //lineEdit()->clear();
lineEdit()->blockSignals(false); lineEdit()->blockSignals(false);
resizeIcons(); resizeIcons();
} }

View File

@@ -63,12 +63,12 @@ private:
void changeEvent(QEvent * e); void changeEvent(QEvent * e);
void statusPaintEvent(); void statusPaintEvent();
void cwPaintEvent(); void cwPaintEvent();
void resizeIcons();
private slots: private slots:
void clearMouseRelease(QMouseEvent * e); void clearMouseRelease(QMouseEvent * e);
void textChanged_(const QString & text); void textChanged_(const QString & text);
void setExpression_(); void setExpression_();
void resizeIcons();
signals: signals:
void valueChanged(double val); void valueChanged(double val);