mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-28 21:57:57 +03:00
54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
#include "ElidedLabel.h"
|
|
|
|
#include <QDebug>
|
|
#include <QPainter>
|
|
#include <QResizeEvent>
|
|
|
|
ElidedLabel::ElidedLabel(QWidget* parent, Qt::WindowFlags f)
|
|
: QLabel(parent, f)
|
|
, elideMode_(Qt::ElideRight)
|
|
{
|
|
// setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
|
|
}
|
|
|
|
ElidedLabel::ElidedLabel(const QString& txt, QWidget* parent, Qt::WindowFlags f)
|
|
: QLabel(txt, parent, f)
|
|
, elideMode_(Qt::ElideRight)
|
|
{
|
|
}
|
|
|
|
ElidedLabel::ElidedLabel(const QString& txt, Qt::TextElideMode elideMode, QWidget* parent, Qt::WindowFlags f)
|
|
: QLabel(txt, parent, f)
|
|
, elideMode_(elideMode)
|
|
{
|
|
}
|
|
|
|
void ElidedLabel::setText(const QString& txt)
|
|
{
|
|
QLabel::setText(txt);
|
|
cacheElidedText(geometry().width());
|
|
}
|
|
|
|
void ElidedLabel::cacheElidedText(int w)
|
|
{
|
|
cachedElidedText = fontMetrics().elidedText(text(), elideMode_, w, Qt::TextShowMnemonic);
|
|
}
|
|
|
|
void ElidedLabel::resizeEvent(QResizeEvent* e)
|
|
{
|
|
QLabel::resizeEvent(e);
|
|
cacheElidedText(e->size().width());
|
|
}
|
|
|
|
void ElidedLabel::paintEvent(QPaintEvent* e)
|
|
{
|
|
if(elideMode_ == Qt::ElideNone)
|
|
{
|
|
QLabel::paintEvent(e);
|
|
}
|
|
else
|
|
{
|
|
QPainter p(this);
|
|
p.drawText(0, 0, geometry().width(), geometry().height(), alignment(), cachedElidedText);
|
|
}
|
|
}
|