Доброго дня! Вопрос м.б. простой, но сам не разобрался. В QtCreator создал проект с готовым окном. Задача - передвигать по окну нарисованные фигуры (просто разбираюсь). Фигуры на форме нарисовал. вот куски кода.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void paintEvent(QPaintEvent*event);
private:
Ui::MainWindow *ui;
};
void GameFunc();
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QString>
#include <QGraphicsView>
#include "field_class.h"
humanBall fieldArray[64];
humanBall*fieldArrayPointer=fieldArray;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void GameFunc()
{
createField(fieldArrayPointer);
};
void MainWindow::paintEvent(QPaintEvent*event)
{
GameFunc();
QPainter p(this);
for (int i=0;i<=8;i++)
{
p.drawLine(0+1,i*30+1,240+1,i*30+1);
p.drawLine(i*30+1,0+1,i*30+1,240+1);
};
QString str;
for (int i=0;i<8;i++)
{
for (int j=0;j<8;j++)
{
if (fieldArrayPointer[i*8+j].returnPower()!=0)
{
//p.drawText(i*30+12,j*30+23,str.setNum(fieldArrayPointer[i*8+j].returnPower()));
p.drawText(j*30+12,i*30+23,str.setNum(fieldArrayPointer[i*8+j].returnPower()));
p.drawEllipse(j*30+2,i*30+2,28,28);
};
};
};
};
Имеется поле 8 на 8. В каждой клетке поля вписан круг с цифрой. Эти круги собрался двигать. Все хранится, разумеется в массиве. Вопрос: как мне необходимо работать с QPainter, чтобы при изменении значения в массиве у меня перерисовывалось изображение на форме (где и что писать, и где надо описывать основной цикл игры)? По какому принципу происходит отрисовка? Если я делаю что-либо не правильно, подскажите как надо - хочу разобраться.