Qt Animate QPushButton Icon

Я хотел бы анимировать размер значка QPushButton, потому что, когда я пытаюсь анимировать весь размер объекта QPushButton, значок вообще не изменяется. Кажется, на значке QPushButton нет свойства "setScaledContents". Я попытался использовать этот код для значка в моем собственном методе QPushButton (при наведении курсора):

QIcon *icon = new QIcon(this->icon());
QPropertyAnimation *animation = new QPropertyAnimation((QObject*)icon, "size");
animation->setDuration(1000);
QSize test = this->size();
animation->setStartValue(test);

animation->setEndValue(QSize(test.width()+100,test.height()+100));

animation->start();

Но я получаю ошибку "сегментация не удалась" в этом коде. Есть ли другой способ, которым я могу анимировать свою иконку QPushButton?

1 ответ

Решение

Вам нужно вместо этого передать действительную ссылку на QObject (согласно комментарию Криса выше)

Ваш код работает нормально, если я просто заменю параметр, переданный в QPropertyAnimation:

// ui->pushButton is a QPushButton*
QPropertyAnimation *animation = new QPropertyAnimation(ui->pushButton, "size");
animation->setDuration(1000);
QSize test = this->size();
animation->setStartValue(test);
animation->setEndValue(QSize(test.width()+100,test.height()+100));
animation->start();

Я собираюсь предположить, что вы подкласс QPushButton (объясняет это ->icon())... возможно, вы можете вместо этого попробовать получить к нему доступ напрямую? Хотя я собираюсь догадаться, что он находится в частной собственности базового / родительского класса.

Другие вопросы по тегам