Все привет
Сделал анимацию по свойству size класса QFrame
QPropertyAnimation *animation = new QPropertyAnimation(bufferFrame, "size");
animation -> setDuration(400);
animation -> setEasingCurve(QEasingCurve(QEasingCurve::OutCubic));
if(bufferButton -> arrowType() == Qt::LeftArrow) {
animation -> setEndValue(QSize(bufferFrame -> minimumWidth(), bufferFrame -> height()));
bufferButton -> setArrowType(Qt::RightArrow);
}
else {
animation -> setEndValue(QSize(bufferFrame -> maximumWidth(), bufferFrame -> height()));
bufferButton -> setArrowType(Qt::LeftArrow);
}
animation -> start(QAbstractAnimation::DeleteWhenStopped);
class SizeHintFrame : public QFrame {
public:
SizeHintFrame(QWidget * = 0);
virtual ~SizeHintFrame();
void setSizeHint(QSize);
void setSizeHint(int, int);
protected:
virtual QSize sizeHint();
private:
QSize _sizeHint;
};
SizeHintFrame::SizeHintFrame(QWidget *parent)
: QFrame(parent) {
// setSizeHint(QFrame::sizeHint());
}
SizeHintFrame::~SizeHintFrame() {
}
void SizeHintFrame::setSizeHint(QSize s) {
_sizeHint = s;
}
void SizeHintFrame::setSizeHint(int h, int w) {
_sizeHint = QSize(h, w);
}
QSize SizeHintFrame::sizeHint() {
return _sizeHint;
}
и добавил обработку завершения анимации
void MainWindow::bufferAnimationFinneshed() {
bufferFrame -> setSizeHint(bufferFrame -> size());
}
В консоль, по завершении анимации размеры виджета выводятся такие, какие и должны быть до и после анимации. Однако поведение не изменилось, размер виджета все-равно сбрасывается в исходный. P.S. После проделанного пробовал выставлять политику размера в QSizePolicy::Fixed, но это не помогло