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