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