57 lines
1.3 KiB
C++
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);
|
|
}
|