: QFrame(parent),
_wrapMode(QTextOption::NoWrap),
_alignment(Qt::AlignVCenter|Qt::AlignLeft),
- _toolTipEnabled(true)
+ _toolTipEnabled(true),
+ _resizeMode(NoResize)
{
setMouseTracking(true);
_layout.setTextOption(opt);
}
+void StyledLabel::setCustomFont(const QFont &font) {
+ setFont(font);
+ _layout.setFont(font);
+ setText(_layout.text());
+}
+
void StyledLabel::setWrapMode(QTextOption::WrapMode mode) {
if(_wrapMode == mode)
return;
layout();
}
+void StyledLabel::setResizeMode(ResizeMode mode) {
+ if(_resizeMode == mode)
+ return;
+
+ _resizeMode = mode;
+ if(mode == DynamicResize)
+ setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
+ else
+ setWrapMode(QTextOption::NoWrap);
+}
+
void StyledLabel::resizeEvent(QResizeEvent *event) {
QFrame::resizeEvent(event);
}
}
+void StyledLabel::enterEvent(QEvent *) {
+ if(resizeMode() == ResizeOnHover)
+ setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
+}
+
void StyledLabel::leaveEvent(QEvent *) {
endHoverMode();
+ if(resizeMode() == ResizeOnHover)
+ setWrapMode(QTextOption::NoWrap);
}
void StyledLabel::mousePressEvent(QMouseEvent *event) {
Q_OBJECT
public:
+ enum ResizeMode {
+ NoResize,
+ DynamicResize,
+ ResizeOnHover
+ };
+
StyledLabel(QWidget *parent = 0);
void setText(const QString &text);
+ void setCustomFont(const QFont &font);
virtual QSize sizeHint() const;
//virtual QSize minimumSizeHint() const;
inline bool toolTipEnabled() const { return _toolTipEnabled; }
void setToolTipEnabled(bool);
+ inline ResizeMode resizeMode() const { return _resizeMode; }
+ void setResizeMode(ResizeMode);
+
signals:
void clickableActivated(const Clickable &click);
protected:
virtual void paintEvent(QPaintEvent *event);
virtual void resizeEvent(QResizeEvent *event);
+ virtual void enterEvent(QEvent *);
virtual void leaveEvent(QEvent *);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
QTextLayout _layout;
ClickableList _clickables;
bool _toolTipEnabled;
+ ResizeMode _resizeMode;
QList<QTextLayout::FormatRange> _layoutList;
QVector<QTextLayout::FormatRange> _extraLayoutList;