Indicate that things are clickable.

This commit is contained in:
Brübach, Lukas 2025-11-29 21:26:58 +01:00
parent 20a4836de3
commit 8cd5552d65
4 changed files with 34 additions and 5 deletions

View file

@ -19,6 +19,16 @@ void BackgroundPlateWidget::paintEvent(QPaintEvent *event)
// Set the background color to semi-transparent black with rounded corners // Set the background color to semi-transparent black with rounded corners
QRect rect = this->rect(); QRect rect = this->rect();
painter.setPen(Qt::NoPen); // No border painter.setPen(Qt::NoPen); // No border
painter.setBrush(QColor(0, 0, 0, 140)); // semi-transparent black if (focused) {
painter.setBrush(QColor(85, 190, 75, 140));
} else {
painter.setBrush(QColor(0, 0, 0, 140)); // semi-transparent black
}
painter.drawRoundedRect(rect, 6, 6); // rounded corners painter.drawRoundedRect(rect, 6, 6); // rounded corners
}
void BackgroundPlateWidget::setFocused(bool _focused)
{
focused = _focused;
update();
} }

View file

@ -10,6 +10,11 @@ class BackgroundPlateWidget : public QWidget
public: public:
explicit BackgroundPlateWidget(QWidget *parent = nullptr); explicit BackgroundPlateWidget(QWidget *parent = nullptr);
void setFocused(bool focused);
private:
bool focused = false;
protected: protected:
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
}; };

View file

@ -101,10 +101,10 @@ ArchidektApiResponseDeckEntryDisplayWidget::ArchidektApiResponseDeckEntryDisplay
headerLayout->addWidget(colorBar); headerLayout->addWidget(colorBar);
// Create a shared plate for the labels // Create a shared plate for the labels
BackgroundPlateWidget *sharedPlate = new BackgroundPlateWidget(this); backgroundPlateWidget = new BackgroundPlateWidget(this);
sharedPlate->setFixedHeight(120); // Adjust height to fit all labels backgroundPlateWidget->setFixedHeight(120); // Adjust height to fit all labels
QVBoxLayout *plateLayout = new QVBoxLayout(sharedPlate); QVBoxLayout *plateLayout = new QVBoxLayout(backgroundPlateWidget);
// Add labels to the plate layout // Add labels to the plate layout
QLabel *ownerLabel = new QLabel(QString("Owner: %1").arg(response.getOwner().getName())); QLabel *ownerLabel = new QLabel(QString("Owner: %1").arg(response.getOwner().getName()));
@ -117,7 +117,7 @@ ArchidektApiResponseDeckEntryDisplayWidget::ArchidektApiResponseDeckEntryDisplay
plateLayout->addWidget(updatedAtLabel); plateLayout->addWidget(updatedAtLabel);
// Add the shared plate to the header layout // Add the shared plate to the header layout
headerLayout->addWidget(sharedPlate); headerLayout->addWidget(backgroundPlateWidget);
layout->addLayout(headerLayout); layout->addLayout(headerLayout);
} }
@ -127,6 +127,16 @@ void ArchidektApiResponseDeckEntryDisplayWidget::mousePressEvent(QMouseEvent *ev
QWidget::mousePressEvent(event); QWidget::mousePressEvent(event);
actRequestNavigationToDeck(); actRequestNavigationToDeck();
} }
void ArchidektApiResponseDeckEntryDisplayWidget::enterEvent(QEnterEvent *event)
{
QWidget::enterEvent(event);
backgroundPlateWidget->setFocused(true);
}
void ArchidektApiResponseDeckEntryDisplayWidget::leaveEvent(QEvent *event)
{
QWidget::leaveEvent(event);
backgroundPlateWidget->setFocused(false);
}
void ArchidektApiResponseDeckEntryDisplayWidget::setScaleFactor(int scale) void ArchidektApiResponseDeckEntryDisplayWidget::setScaleFactor(int scale)
{ {

View file

@ -11,6 +11,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QWidget> #include <QWidget>
class BackgroundPlateWidget;
class ArchidektApiResponseDeckEntryDisplayWidget : public QWidget class ArchidektApiResponseDeckEntryDisplayWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
@ -32,6 +33,8 @@ public slots:
protected: protected:
void mousePressEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override;
void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override;
private: private:
QVBoxLayout *layout; QVBoxLayout *layout;
@ -42,6 +45,7 @@ private:
QLabel *picture; QLabel *picture;
QPixmap originalPixmap; QPixmap originalPixmap;
int scaleFactor = 100; int scaleFactor = 100;
BackgroundPlateWidget *backgroundPlateWidget;
}; };
#endif // COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_ENTRY_DISPLAY_WIDGET_H #endif // COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_ENTRY_DISPLAY_WIDGET_H