This repository has been archived on 2020-09-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
libs/qad/widgets/evalspinbox.h
Бычков Андрей 350240cdfc QAD_EXPORT
git-svn-id: svn://db.shs.com.ru/libs@719 a8b55f48-bf90-11e4-a774-851b48703e85
2020-02-28 10:05:11 +00:00

85 lines
2.1 KiB
C++

#ifndef EVALSPINBOX_H
#define EVALSPINBOX_H
#include <QAbstractSpinBox>
#include <QMouseEvent>
#include "qpievaluator.h"
class QLabel;
class QAD_EXPORT EvalSpinBox: public QAbstractSpinBox
{
Q_OBJECT
Q_PROPERTY(double value READ value WRITE setValue NOTIFY valueChanged USER true)
Q_PROPERTY(QString expression READ expression WRITE setExpression USER true)
Q_PROPERTY(QString defaultText READ defaultText WRITE setDefaultText)
Q_PROPERTY(bool clearButtonVisible READ isClearButtonVisible WRITE setClearButtonVisible)
Q_PROPERTY(int precision READ precision WRITE setPrecision)
public:
explicit EvalSpinBox(QWidget * parent = 0);
~EvalSpinBox();
double value() const;
const QString & expression() const;
const QString & defaultText() const {return dt;}
bool isClearButtonVisible() const {return cw_visible;}
bool isCleared() const;
int precision() const {return precision_;}
virtual void stepBy(int steps);
virtual void clear();
virtual QSize sizeHint() const;
protected:
QString text() const {return QAbstractSpinBox::text();}
virtual StepEnabled stepEnabled() const;
virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event);
virtual void wheelEvent(QWheelEvent *event);
void stepByDouble(double steps);
QWidget * status;
QWidget * cw;
QPIEvaluator eval;
QLabel * label;
QImage icon_ok;
QImage icon_fail;
QImage icon_calc;
QImage icon;
QImage clear_im;
QString dt;
bool cw_visible;
int precision_;
private:
bool eventFilter(QObject * o, QEvent * e);
void resizeEvent(QResizeEvent * );
void changeEvent(QEvent * e);
void statusPaintEvent();
void cwPaintEvent();
private slots:
void clearMouseRelease(QMouseEvent * e);
void textChanged_(const QString & text);
void setExpression_();
void resizeIcons();
public slots:
void setExpression(const QString & expr);
void setValue(double val);
void setDefaultText(const QString & t);
void setClearButtonVisible(bool visible);
void setPrecision(int precision) {precision_ = precision;}
signals:
void valueChanged(double val);
void cleared();
};
#endif // EVALSPINBOX_H