/* QAD - Qt ADvanced Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef ICONEDLABEL_H #define ICONEDLABEL_H #include "qad_widgets_export.h" #include #include class QAD_WIDGETS_EXPORT IconedLabel: public QFrame { Q_OBJECT Q_ENUMS(Direction) Q_PROPERTY(QString text READ text WRITE setText) Q_PROPERTY(QIcon icon READ icon WRITE setIcon) Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) Q_PROPERTY(Direction direction READ direction WRITE setDirection) Q_PROPERTY(double iconSizeAutoScale READ iconSizeAutoScale WRITE setIconSizeAutoScale) public: enum Direction { LeftToRight = 0, RightToLeft = 1, TopToBottom = 2, BottomToTop = 3 }; explicit IconedLabel(QWidget * parent = nullptr); QString text() const; QIcon icon() const; QSize iconSize() const { return size_; } Direction direction() const { return dir_; } QLabel * textLabel() { return &label_; } double iconSizeAutoScale() const { return m_iconSizeAutoScale; } void setIconSizeAutoScale(double newIconSizeAutoScale); public slots: void setText(const QString & t); void setIcon(const QIcon & i); void setIconSize(const QSize & s); void setDirection(Direction d); protected: bool event(QEvent * e) override; void checkSpacing(); QSize realIconSize() const; QLabel label_, icon_; QIcon sicon_; QSize size_; Direction dir_; double m_iconSizeAutoScale = 1.; }; #endif // ICONEDLABEL_H