Russian Qt Forum
Апрель 23, 2024, 17:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как осуществить последовательное выполнение анимаций?  (Прочитано 1311 раз)
wildnothing
Гость
« : Февраль 25, 2018, 17:05 »

Я хочу передвинуть виджет сначала влево, а потом вправо. Как это осуществить ? Я  пытаюсь организовать это таким образом(см. код), но у меня получается движение только влево.

Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QList>
#include <QLabel>
#include <QPropertyAnimation>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void moveBoat(char c);
   
private:
    Ui::MainWindow *ui;
 QPropertyAnimation* animation;
};

#endif // MAINWINDOW_H

Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QHBoxLayout"
#include <QPropertyAnimation>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    srand( time(0) );
    ui->setupUi(this);

QPixmap boat("C:/qtProjects/lab1_tixv/boat.png");
ui->boat->setPixmap(boat);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::moveBoat(char c)
{
    int x;
    if (c == 'r') x = 360;
    else x = 120;

    animation = new QPropertyAnimation(ui->boat, "geometry");
    animation->setDuration(3000);
    animation->setEasingCurve(QEasingCurve::Linear);
    animation->setStartValue(ui->boat->geometry());
    animation->setEndValue(QRect(x, 100, 100, 37));
    animation->start();
}

Код:
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
w.moveBoat('r'); //подвинуть вправо

w.moveBoat('l'); //подвинуть влево
    return a.exec();
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 20.