QT實現一條魚的自由遊動
前言:本次設計很粗糙的實現的魚的自由遊動,大體思路是設定定時器,每隔一段時間呼叫一次repaint()函式,達到呼叫paintEvent()函式的目的,在paintEvent()函式中實現一次顯示魚兒遊動的圖片達到動態效果,並不斷改變圖片的位置,實現魚兒的遊動。
1、新建工程如下圖所示
2、修改widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPainter>
#include <QPixmap>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
QTimer *time;
int i;
int f_x,f_y;
public:
void paintEvent(QPaintEvent *);
void move();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
3、修改widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDebug>
#include <QString>
#include <QPixmap>
#include<qstring.h>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
time = new QTimer;
time->setInterval(50);
time->start();
i = 0;
this->setFixedSize(800,480);
f_y= 480;
f_x = 800;
connect(time,SIGNAL(timeout()),this,SLOT(repaint()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *)
{
//QString *str;
QPainter painter(this);
QPixmap fash;
//i=rand()%10;
i++;
if (i > 9 )
{
i = 0;
}
//fash.load("fish01_00.png");
//QPixmap pixmap;
//str = "fish01_00.png";
//pixmap.load(str);
//pixmap("fish01_00.png");
//str=tr(":images/")+tr("fish01")+tr("_0")+tr(QString::number(i))+tr(".png");
//QPixmap pixmap;
switch (i)
{
case 0:
{
fash.load("fish01_00.png");
qDebug() << "fish01_00.png"<< endl;
break;
}
case 1:
{
fash.load("fish01_01.png");
qDebug() << "fish01_01.png"<< endl;
break;
}
case 2:
{
fash.load("fish01_02.png");
qDebug() << "fish01_02.png"<< endl;
break;
}
case 3:
{
fash.load("fish01_03.png");
qDebug() << "fish01_03.png"<< endl;
break;
}
case 4:
{
fash.load("fish01_04.png");
qDebug() << "fish01_04.png"<< endl;
break;
}
case 5:
{
fash.load("fish01_05.png");
qDebug() << "fish01_05.png"<< endl;
break;
}
case 6:
{
fash.load("fish01_06.png");
qDebug() << "fish01_06.png"<< endl;
break;
}
case 7:
{
fash.load("fish01_07.png");
qDebug() << "fish01_07.png"<< endl;
break;
}
case 8:
{
fash.load("fish01_08.png");
qDebug() << "fish01_08.png"<< endl;
break;
}
default:
qDebug() << "default!!!!"<< endl;
break;
}
//QPixmap pixmap(str);
f_y=f_y-0.5;
if (f_y < 50)
{
f_y=480;
}
f_x=f_x-0.5;
if (f_x < 50)
{
f_x=800;
}
//qDebug() << "void Widget::paintEvent(QPaintEvent *)" << endl;
painter.save();
//painter.translate(100,100);
//painter.rotate(90);
//str=":images/fish01_00.png";
//fash.load("fish01_00.png");
painter.drawPixmap(f_x,f_y,fash.width(),fash.height(),fash);
//painter.drawPixmap(-fash.width()/2,-fash.height()/2,fash.width(),fash.height(),fash);
painter.restore();
}
3、執行結果