You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
919 B
29 lines
919 B
#include "tools/cabana/utils/elidedlabel.h"
|
|
#include <QPainter>
|
|
#include <QStyleOption>
|
|
|
|
ElidedLabel::ElidedLabel(QWidget *parent) : ElidedLabel({}, parent) {}
|
|
|
|
ElidedLabel::ElidedLabel(const QString &text, QWidget *parent) : QLabel(text.trimmed(), parent) {
|
|
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
|
setMinimumWidth(1);
|
|
}
|
|
|
|
void ElidedLabel::resizeEvent(QResizeEvent* event) {
|
|
QLabel::resizeEvent(event);
|
|
lastText_ = elidedText_ = "";
|
|
}
|
|
|
|
void ElidedLabel::paintEvent(QPaintEvent *event) {
|
|
const QString curText = text();
|
|
if (curText != lastText_) {
|
|
elidedText_ = fontMetrics().elidedText(curText, Qt::ElideRight, contentsRect().width());
|
|
lastText_ = curText;
|
|
}
|
|
|
|
QPainter painter(this);
|
|
drawFrame(&painter);
|
|
QStyleOption opt;
|
|
opt.initFrom(this);
|
|
style()->drawItemText(&painter, contentsRect(), alignment(), opt.palette, isEnabled(), elidedText_, foregroundRole());
|
|
}
|
|
|