kokeroulis
18th August 2010, 13:03
hello
This my first time that i am trying to create something with qt...So probably i have made a very silly mistake but i don't know how to fix it, so i need your help. I want to create the terrain for a chess game... My code compiles properly but the problem is that it doesn't paint the board as it is supposed to do....Here is the files which i use to create the program....
main.cpp
#include <QtGui/QApplication>
#include "board.h"
#include <QGraphicsView>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
qscene scene;
QGraphicsView view(&scene);
view.show();
return app.exec();
}
board.h
#ifndef board_H
#define board_H
#include <QGraphicsItem>
#include "qscene.h"
//#include <QGraphicsScene>
//#include <QGraphicsRectItem>
class board : public QGraphicsItem//, public qscene
{
public:
virtual QRectF boundingRect() const;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
board(qscene *scene);
//virtual ~checkers2();
};
#endif
board.cpp
#include "board.h"
board::board(qscene *scene)
{
for(int i=0; i<=7; i++) {
int x =-390, y=-310;
y = y +(i*50);
for(int j=0; j<=7; j++) {
QGraphicsRectItem *rectb = new QGraphicsRectItem(this);
if (i%2 !=0) {
if(j%2 == 0) {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::white));
}
else {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::black));
}}
else {
if(j%2 == 0) {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::black));
}
else {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::white));
}
}
rectb->setZValue(1);
scene->addItem(rectb);
x = x+50;
}
}
}
QRectF board::boundingRect() const
{
}
void board::paint(QPainter* painter , const QStyleOptionGraphicsItem*
options, QWidget* widget)
{
foreach( QGraphicsItem *i, childItems()){
i->paint(painter, options , widget);}}
#include "board.moc"
qscene.h
#ifndef qscene_H
#define qscene_H
//#include <QGraphicsItem>
#include <QtGui/QGraphicsView>
#include <QGraphicsScene>
class qscene : public QGraphicsScene//,public QGraphicsView
{
public:
qscene();
//virtual ~checkers2();
};
#endif
qscene.cpp
#include "qscene.h"
//#include <QGraphicsScene>
#include "board.h"
qscene::qscene()
{
QGraphicsScene *scene = new QGraphicsScene(this);
scene->setSceneRect(QRectF(0,0,10,10));
board terrain(qscene *scene);
}
#include "qscene.moc"
This my first time that i am trying to create something with qt...So probably i have made a very silly mistake but i don't know how to fix it, so i need your help. I want to create the terrain for a chess game... My code compiles properly but the problem is that it doesn't paint the board as it is supposed to do....Here is the files which i use to create the program....
main.cpp
#include <QtGui/QApplication>
#include "board.h"
#include <QGraphicsView>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
qscene scene;
QGraphicsView view(&scene);
view.show();
return app.exec();
}
board.h
#ifndef board_H
#define board_H
#include <QGraphicsItem>
#include "qscene.h"
//#include <QGraphicsScene>
//#include <QGraphicsRectItem>
class board : public QGraphicsItem//, public qscene
{
public:
virtual QRectF boundingRect() const;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
board(qscene *scene);
//virtual ~checkers2();
};
#endif
board.cpp
#include "board.h"
board::board(qscene *scene)
{
for(int i=0; i<=7; i++) {
int x =-390, y=-310;
y = y +(i*50);
for(int j=0; j<=7; j++) {
QGraphicsRectItem *rectb = new QGraphicsRectItem(this);
if (i%2 !=0) {
if(j%2 == 0) {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::white));
}
else {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::black));
}}
else {
if(j%2 == 0) {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::black));
}
else {
rectb->setRect(x, y, 50, 50);
rectb->setBrush(QBrush(Qt::white));
}
}
rectb->setZValue(1);
scene->addItem(rectb);
x = x+50;
}
}
}
QRectF board::boundingRect() const
{
}
void board::paint(QPainter* painter , const QStyleOptionGraphicsItem*
options, QWidget* widget)
{
foreach( QGraphicsItem *i, childItems()){
i->paint(painter, options , widget);}}
#include "board.moc"
qscene.h
#ifndef qscene_H
#define qscene_H
//#include <QGraphicsItem>
#include <QtGui/QGraphicsView>
#include <QGraphicsScene>
class qscene : public QGraphicsScene//,public QGraphicsView
{
public:
qscene();
//virtual ~checkers2();
};
#endif
qscene.cpp
#include "qscene.h"
//#include <QGraphicsScene>
#include "board.h"
qscene::qscene()
{
QGraphicsScene *scene = new QGraphicsScene(this);
scene->setSceneRect(QRectF(0,0,10,10));
board terrain(qscene *scene);
}
#include "qscene.moc"