yhkylin-backup-tools/kybackup/component/mylabel.cpp

57 lines
1.3 KiB
C++

#include "mylabel.h"
#include <QPalette>
#include <QFont>
#include <QFontMetrics>
#include <QPainter>
MyLabel::MyLabel(const QString& text, QWidget* parent /*= nullptr*/, QColor color /*= QColor(0xCC, 0xCC, 0xCC)*/) :
QLabel(parent),
m_text(text)
{
QPalette palette = this->palette();
palette.setColor(QPalette::WindowText, color);
this->setPalette(palette);
this->setAlignment(Qt::AlignCenter);
this->setScaledContents(true);
this->setText(text);
}
MyLabel::MyLabel(QWidget* parent) :
QLabel(parent)
{
}
MyLabel::~MyLabel()
{}
void MyLabel::setFontColor(QColor color)
{
QPalette palette = this->palette();
palette.setColor(QPalette::WindowText, color);
this->setPalette(palette);
}
void MyLabel::setFontSize(int size)
{
QFont font = this->font();
font.setPixelSize(size);
// 默认为大字体粗体显示
if (size > 20)
font.setBold(true);
this->setFont(font);
}
void MyLabel::paintEvent(QPaintEvent *event)
{
QFontMetrics fontMetrics(this->font());
int fontSize = fontMetrics.width(m_text);
if (fontSize > this->width()) {
this->setText(fontMetrics.elidedText(m_text, Qt::ElideRight, this->width()));
} else {
this->setText(m_text);
}
QLabel::paintEvent(event);
}