Я столкнулся с подобной проблемой при попытке анимировать изменение размера qlabel с помощью qpixmap.Метод, который я нашел лучше всего, состоял в том, чтобы вместо этого использовать QWidget и повторно реализовать функцию paintEvent.Тогда ваше изображение QWidget будет автоматически масштабировано, если оно будет изменено.Вот пример:
В моем случае у меня были закрытые переменные в закрытом объекте с именем private _:
bool image_set_;
QImage image_;
QBrush paintbrush_;
void MyClass::paintEvent( QPaintEvent* event )
{
// if the QWidget has an image set, then we use our custom painting.
if( this->private_->image_set_ )
{
//I've made it so that my QWidget has a 1px white border
this->private_->paintbrush_.setTextureImage( this->private_->image_.scaled(QSize( this->width() - 2, this->height() - 2 ) ) );
QPainter painter( this );
QRect temp_rect = QRect( 1, 1, this->width()-2, this->height() - 2 );
painter.fillRect( this->rect(), Qt::white );
painter.fillRect( temp_rect, this->private_->paintbrush_ );
}
else
{
QWidget::paintEvent( event );
}
}