Russian Qt Forum
Ноябрь 22, 2024, 20:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работает событие входа в область виджета  (Прочитано 3393 раз)
xverizex
Новичок

Offline Offline

Сообщений: 14


Просмотр профиля
« : Ноябрь 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);
}

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Ноябрь 23, 2020, 14:41 »

попробуй return true для обработанных событий
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
xverizex
Новичок

Offline Offline

Сообщений: 14


Просмотр профиля
« Ответ #2 : Ноябрь 23, 2020, 15:51 »

неа, не работает. даже не работает enterEvent.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Ноябрь 23, 2020, 16:46 »

попробуй использовать enterEvent() напрямую либо поставить eventFilter на кнопку
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Ноябрь 25, 2020, 12:57 »

Ну ошибку в switch по-любому надо исправить, ветки должны заканчиваться break или return, иначе код ниже будет выполняться.

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

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

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Ноябрь 25, 2020, 13:46 »

Помимо правок по свичу, пришли что в *.h файле написал.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Декабрь 31, 2020, 09:20 »

setMouseTracking()
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.