From 6d78dbe92e4cb999dd7d02ac4047df853677d326 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sat, 8 May 2021 20:47:30 +0200 Subject: [PATCH] Introduce TextoutputLabel: Resizes automatically with text --- qsrun.pro | 2 ++ textoutputlabel.cpp | 37 +++++++++++++++++++++++++++++++++++++ textoutputlabel.h | 14 ++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 textoutputlabel.cpp create mode 100644 textoutputlabel.h diff --git a/qsrun.pro b/qsrun.pro index 8ed264f..9c18929 100644 --- a/qsrun.pro +++ b/qsrun.pro @@ -12,6 +12,7 @@ HEADERS += calculationengine.h \ entrypushbutton.h \ settingsprovider.h \ singleinstanceserver.h \ + textoutputlabel.h \ window.h SOURCES += calculationengine.cpp \ entryprovider.cpp \ @@ -19,6 +20,7 @@ SOURCES += calculationengine.cpp \ main.cpp \ settingsprovider.cpp \ singleinstanceserver.cpp \ + textoutputlabel.cpp \ window.cpp QT += widgets sql network QT_CONFIG -= no-pkg-config diff --git a/textoutputlabel.cpp b/textoutputlabel.cpp new file mode 100644 index 0000000..7a7e69f --- /dev/null +++ b/textoutputlabel.cpp @@ -0,0 +1,37 @@ +#include "textoutputlabel.h" + +TextoutputLabel::TextoutputLabel() +{ + QFont font; + font.setPointSize(48); + font.setBold(true); + this->setFont(font); + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->setAlignment(Qt::AlignCenter); + this->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu); +} + +void TextoutputLabel::setText(const QString &text) +{ + QLabel::setText(text); + QFont currentFont = this->font(); + int calculatedPointSize = currentFont.pointSize(); + QFontMetrics fm(currentFont); + int contentWidth = this->contentsRect().width() - this->margin(); + while(calculatedPointSize < 48 && fm.boundingRect(this->text()).width() < contentWidth) + { + calculatedPointSize += 1; + currentFont.setPointSize(calculatedPointSize); + fm = QFontMetrics(currentFont); + } + while(fm.boundingRect(this->text()).width() >= contentWidth) + { + calculatedPointSize -= 1; + currentFont.setPointSize(calculatedPointSize); + fm = QFontMetrics(currentFont); + } + this->setFont(currentFont); +} + + + diff --git a/textoutputlabel.h b/textoutputlabel.h new file mode 100644 index 0000000..5d4bb9e --- /dev/null +++ b/textoutputlabel.h @@ -0,0 +1,14 @@ +#ifndef TEXTOUTPUTLABEL_H +#define TEXTOUTPUTLABEL_H +#include + +class TextoutputLabel : public QLabel +{ +public: + TextoutputLabel(); + virtual void setText(const QString &text); + + +}; + +#endif // TEXTOUTPUTLABEL_H