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?

0

Решение

Вам нужно вместо этого передать действительную ссылку на 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 ()) … возможно, вы можете вместо этого попробовать получить к нему доступ напрямую? Хотя я собираюсь догадаться, что он находится в частной собственности базового / родительского класса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]