Resize setName to picture width on initialization.

Also add a new signal to card_info_picture_widget to emit when the scale factor changes.

Hook this up to the setName resizing method to ensure card size updates trigger it appropriately after initialization.

Clean up unused enter and resize methods that just delegated to base-class.
This commit is contained in:
Lukas Brübach 2024-11-25 23:51:23 +01:00 committed by ZeldaZach
parent ce2c9115ac
commit f12259500e
No known key found for this signature in database
6 changed files with 20 additions and 15 deletions

View file

@ -99,6 +99,8 @@ void CardInfoPictureWidget::setScaleFactor(const int scale)
setFixedSize(newWidth, newHeight);
updatePixmap();
emit cardScaleFactorChanged(scale);
}
/**

View file

@ -29,6 +29,7 @@ public slots:
signals:
void hoveredOnCard(CardInfoPtr hoveredCard);
void cardScaleFactorChanged(int _scale);
protected:
void resizeEvent(QResizeEvent *event) override;

View file

@ -312,6 +312,7 @@ void PrintingSelector::getAllSetsForCurrentCard()
new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
selectedCard, prependedSets[currentIndex], currentZone);
flowWidget->addWidget(cardDisplayWidget);
cardDisplayWidget->clampSetNameToPicture();
}
// Stop timer when done

View file

@ -33,21 +33,14 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
setNameAndCollectorsNumberDisplayWidget =
new SetNameAndCollectorsNumberDisplayWidget(this, combinedSetName, setInfoForCard.getProperty("num"));
layout->addWidget(overlayWidget);
layout->addWidget(overlayWidget, 0, Qt::AlignHCenter);
layout->addWidget(setNameAndCollectorsNumberDisplayWidget, 1, Qt::AlignHCenter | Qt::AlignBottom);
setMouseTracking(true);
}
void PrintingSelectorCardDisplayWidget::enterEvent(QEnterEvent *event)
void PrintingSelectorCardDisplayWidget::clampSetNameToPicture()
{
QWidget::enterEvent(event);
if (overlayWidget != nullptr && setNameAndCollectorsNumberDisplayWidget != nullptr) {
setNameAndCollectorsNumberDisplayWidget->setMaximumWidth(overlayWidget->width());
}
update();
}
void PrintingSelectorCardDisplayWidget::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event); // Ensure the parent class handles the event first
// Set the maximum width for the setName QLabel
setNameAndCollectorsNumberDisplayWidget->setMaximumWidth(overlayWidget->width());
}
}

View file

@ -31,8 +31,9 @@ public:
CardInfoPtr rootCard,
CardInfoPerSet setInfoForCard,
QString &currentZone);
void enterEvent(QEnterEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
public slots:
void clampSetNameToPicture();
private:
QVBoxLayout *layout;

View file

@ -1,6 +1,7 @@
#include "printing_selector_card_overlay_widget.h"
#include "../../../../game/cards/card_database_manager.h"
#include "printing_selector_card_display_widget.h"
#include <QVBoxLayout>
@ -36,6 +37,12 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
allZonesCardAmountWidget->raise(); // Ensure it's on top of the picture
allZonesCardAmountWidget->setVisible(false);
// Attempt to cast the parent to PrintingSelectorCardDisplayWidget
if (const auto *parentWidget = qobject_cast<PrintingSelectorCardDisplayWidget *>(parent)) {
connect(cardInfoPicture, &CardInfoPictureWidget::cardScaleFactorChanged, parentWidget,
&PrintingSelectorCardDisplayWidget::clampSetNameToPicture);
}
connect(cardSizeSlider, &QSlider::valueChanged, cardInfoPicture, &CardInfoPictureWidget::setScaleFactor);
}