Files
qad/qad_widgets/iconedlabel.h
Бычков Андрей ba8bc27298 1
git-svn-id: svn://db.shs.com.ru/libs@1 a8b55f48-bf90-11e4-a774-851b48703e85
2015-02-28 21:28:53 +00:00

69 lines
1.8 KiB
C++

#ifndef ICONEDLABEL_H
#define ICONEDLABEL_H
#include <QLabel>
#include <QIcon>
#include <QHBoxLayout>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class 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)
public:
enum Direction {LeftToRight = 0, RightToLeft = 1, TopToBottom = 2, BottomToTop = 3};
explicit IconedLabel(QWidget * parent = 0): QFrame(parent) {
label_.setAlignment(Qt::AlignCenter);
icon_.setAlignment(Qt::AlignCenter);
size_ = QSize(16, 16);
setDirection(LeftToRight);
}
QString text() const {return label_.text();}
QIcon icon() const {return icon_.pixmap() == 0 ? QIcon() : QIcon(*icon_.pixmap());}
QSize iconSize() const {return size_;}
Direction direction() const {return dir_;}
protected:
QLabel label_;
QLabel icon_;
QIcon sicon_;
QSize size_;
Direction dir_;
public slots:
void setText(const QString & t) {label_.setText(t);}
void setIcon(const QIcon & i) {sicon_ = i; icon_.setPixmap(i.pixmap(size_));}
void setIconSize(const QSize & s) {size_ = s; icon_.setPixmap(sicon_.pixmap(size_));}
void setDirection(Direction d) {
dir_ = d;
if (layout() != 0)
delete layout();
QLayout * lay = new QBoxLayout((QBoxLayout::Direction)dir_);
lay->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding));
lay->addWidget(&label_);
lay->addWidget(&icon_);
lay->addItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding));
lay->setContentsMargins(0, 0, 0, 0);
setLayout(lay);
update();
}
signals:
};
QT_END_NAMESPACE
QT_END_HEADER
#endif // ICONEDLABEL_H