Adjust font size when adjusting card size.

This commit is contained in:
Lukas Brübach 2024-12-02 03:03:05 +01:00 committed by ZeldaZach
parent 7d42a43c87
commit ba73cda339
No known key found for this signature in database
3 changed files with 43 additions and 4 deletions

View file

@ -30,8 +30,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
const QString combinedSetName =
QString(setInfoForCard.getPtr()->getLongName() + " (" + setInfoForCard.getPtr()->getShortName() + ")");
setNameAndCollectorsNumberDisplayWidget =
new SetNameAndCollectorsNumberDisplayWidget(this, combinedSetName, setInfoForCard.getProperty("num"));
setNameAndCollectorsNumberDisplayWidget = new SetNameAndCollectorsNumberDisplayWidget(
this, combinedSetName, setInfoForCard.getProperty("num"), cardSizeSlider);
layout->addWidget(overlayWidget, 0, Qt::AlignHCenter);
layout->addWidget(setNameAndCollectorsNumberDisplayWidget, 1, Qt::AlignHCenter | Qt::AlignBottom);

View file

@ -1,8 +1,11 @@
#include "set_name_and_collectors_number_display_widget.h"
#include <QSlider>
SetNameAndCollectorsNumberDisplayWidget::SetNameAndCollectorsNumberDisplayWidget(QWidget *parent,
const QString &_setName,
const QString &_collectorsNumber)
const QString &_collectorsNumber,
QSlider *_cardSizeSlider)
: QWidget(parent)
{
layout = new QVBoxLayout(this);
@ -19,10 +22,41 @@ SetNameAndCollectorsNumberDisplayWidget::SetNameAndCollectorsNumberDisplayWidget
collectorsNumber->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
collectorsNumber->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
cardSizeSlider = _cardSizeSlider;
connect(cardSizeSlider, &QSlider::valueChanged, this, &SetNameAndCollectorsNumberDisplayWidget::adjustFontSize);
layout->addWidget(setName);
layout->addWidget(collectorsNumber);
}
void SetNameAndCollectorsNumberDisplayWidget::adjustFontSize(int scalePercentage)
{
// Define the base font size and the range
const int minFontSize = 8; // Minimum font size
const int maxFontSize = 32; // Maximum font size
const int basePercentage = 100; // Scale at 100%
// Calculate the new font size
int newFontSize = minFontSize + (scalePercentage - basePercentage) * (maxFontSize - minFontSize) / (250 - 25);
// Clamp the font size to the defined range
newFontSize = std::clamp(newFontSize, minFontSize, maxFontSize);
// Update the fonts for both labels
QFont setNameFont = setName->font();
setNameFont.setPointSize(newFontSize);
setName->setFont(setNameFont);
QFont collectorsNumberFont = collectorsNumber->font();
collectorsNumberFont.setPointSize(newFontSize);
collectorsNumber->setFont(collectorsNumberFont);
// Optionally trigger a resize to accommodate new font size
adjustSize();
}
void SetNameAndCollectorsNumberDisplayWidget::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event); // Ensure the parent class handles the event first

View file

@ -2,6 +2,7 @@
#define SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H
#include <QLabel>
#include <QSlider>
#include <QVBoxLayout>
#include <QWidget>
@ -9,13 +10,17 @@ class SetNameAndCollectorsNumberDisplayWidget : public QWidget
{
Q_OBJECT
public:
SetNameAndCollectorsNumberDisplayWidget(QWidget *parent, const QString &setName, const QString &collectorsNumber);
SetNameAndCollectorsNumberDisplayWidget(QWidget *parent, const QString &setName, const QString &collectorsNumber, QSlider *cardSizeSlider);
void resizeEvent(QResizeEvent *event) override;
public slots:
void adjustFontSize(int scalePercentage);
private:
QVBoxLayout *layout;
QLabel *setName;
QLabel *collectorsNumber;
QSlider *cardSizeSlider;
};
#endif // SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H