Russian Qt Forum

Qt => Вопросы новичков => Тема начата: xverizex от Ноябрь 23, 2020, 14:11



Название: Не работает событие входа в область виджета
Отправлено: xverizex от Ноябрь 23, 2020, 14:11
Создал класс кнопки. так как в стилях нет такого, чтобы можно было тень отбрасывать от картинки кнопки, то приходится делать это кодом. и вот, после долгого гугления пришел к такому коду. но события не воспроизводятся. почему?
Код:
ButtonPlay::ButtonPlay(QWidget *parent) : QPushButton(parent)
{
    QPixmap pixmap(":/assets/button_play.png");
    setIcon(QIcon(pixmap));
    setIconSize(pixmap.rect().size());
    setFixedSize(pixmap.width(), pixmap.height());
    move(460, 240);
}

bool ButtonPlay::event(QEvent *e) {
    switch(e->type()) {
    case QEvent::Enter: {
        QGraphicsDropShadowEffect effect;
        effect.setBlurRadius(30);
        effect.setColor(QColor(0,0,0,255));
        effect.setXOffset(10);
        effect.setYOffset(10);
        setGraphicsEffect(&effect);
        }
    case QEvent::Leave: {
        QGraphicsDropShadowEffect effect;
        effect.setBlurRadius(0);
        effect.setColor(QColor(0,0,0,0));
        effect.setXOffset(0);
        effect.setYOffset(0);
        setGraphicsEffect(&effect);
        }
    }
    return QWidget::event(e);
}



Название: Re: Не работает событие входа в область виджета
Отправлено: kambala от Ноябрь 23, 2020, 14:41
попробуй return true для обработанных событий


Название: Re: Не работает событие входа в область виджета
Отправлено: xverizex от Ноябрь 23, 2020, 15:51
неа, не работает. даже не работает enterEvent.


Название: Re: Не работает событие входа в область виджета
Отправлено: kambala от Ноябрь 23, 2020, 16:46
попробуй использовать enterEvent() напрямую либо поставить eventFilter на кнопку


Название: Re: Не работает событие входа в область виджета
Отправлено: Igors от Ноябрь 25, 2020, 12:57
Ну ошибку в switch по-любому надо исправить, ветки должны заканчиваться break или return, иначе код ниже будет выполняться.

Во-вторых, неясно как эффект должен работать если он объявлен на стеке и разрушается при выходе из веток

А начать с того что поставить breakpoint'ы в ветках и смотреть доходит ли туда упр-е вообще


Название: Re: Не работает событие входа в область виджета
Отправлено: ecspertiza от Ноябрь 25, 2020, 13:46
Помимо правок по свичу, пришли что в *.h файле написал.


Название: Re: Не работает событие входа в область виджета
Отправлено: lit-uriy от Декабрь 31, 2020, 09:20
setMouseTracking()