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