PROBLEM:
Object::connect: No such signal MTR::PawnBox::dragHasBegun(const MTR::PawnBox::Pawn*)
Object::connect: No such signal MTR::PawnBox::dragHasBegun(const MTR::PawnBox::Pawn*)
To copy to clipboard, switch view to plain text mode
CODE:
#ifndef PAWNBOX_SAFETY_DECLARATION
#define PAWNBOX_SAFETY_DECLARATION
#include <QWidget>
#include <QRectF>
#include <QColor>
#include <QMap>
namespace MTRUTIL {
const int AMOUNT_OF_PAWNS = 8;
}
namespace MTR {
Q_OBJECT
public:
~PawnBox() { delete px; }
//klasa pionka
class Pawn {
public:
Pawn();
~Pawn();
const QColor &color
() const { return color_;
} const QRectF &rectF
() const { return rectF_;
} const QString &id
() const { return id_;
} const QPixmap &internalPicture
() const { return dragPicture;
} private:
void paintInternalPicture();
};
//
signals:
void dragHasBegun(const Pawn *pw);
protected:
private:
void startDrag();
bool insidePawn;
Pawn *draggedPawn;
QMap<int, Pawn> pawnCollection;
};
}
#endif
#ifndef PAWNBOX_SAFETY_DECLARATION
#define PAWNBOX_SAFETY_DECLARATION
class QPaintEvent;
class QPixmap;
#include <QWidget>
#include <QRectF>
#include <QColor>
#include <QMap>
namespace MTRUTIL {
const int AMOUNT_OF_PAWNS = 8;
}
namespace MTR {
class PawnBox : public QWidget {
Q_OBJECT
public:
PawnBox(QWidget *parent = 0);
~PawnBox() { delete px; }
//klasa pionka
class Pawn {
public:
Pawn();
Pawn(QColor &color, QRectF &rec, QString &id);
~Pawn();
const QColor &color() const { return color_; }
const QRectF &rectF() const { return rectF_; }
const QString &id() const { return id_; }
const QPixmap &internalPicture() const { return dragPicture; }
private:
void paintInternalPicture();
QColor color_;
QRectF rectF_;
QString id_;
QPixmap dragPicture;
};
//
signals:
void dragHasBegun(const Pawn *pw);
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
private:
void startDrag();
QPoint startPos;
QPixmap *px;
bool insidePawn;
Pawn *draggedPawn;
QMap<int, Pawn> pawnCollection;
};
}
#endif
To copy to clipboard, switch view to plain text mode
void PawnBox::startDrag() {
mimeData->setText(draggedPawn->id());
drag->setPixmap(draggedPawn->internalPicture());
drag->setMimeData(mimeData);
drag
->setHotSpot
(QPoint(10,
10));
drag->setDragCursor(*px,Qt::MoveAction);
drag->setDragCursor(*px,Qt::CopyAction);
const Pawn *pt = draggedPawn;
emit dragHasBegun(pt);
drag->start(Qt::MoveAction);
}
void PawnBox::startDrag() {
QMimeData *mimeData = new QMimeData;
mimeData->setText(draggedPawn->id());
QDrag *drag = new QDrag(this);
drag->setPixmap(draggedPawn->internalPicture());
drag->setMimeData(mimeData);
drag->setHotSpot(QPoint(10,10));
drag->setDragCursor(*px,Qt::MoveAction);
drag->setDragCursor(*px,Qt::CopyAction);
const Pawn *pt = draggedPawn;
emit dragHasBegun(pt);
drag->start(Qt::MoveAction);
}
To copy to clipboard, switch view to plain text mode
#ifndef GAMEWIDGET_SAFETY_DECLARATION
#define GAMEWIDGET_SAFETY_DECLARATION
#include "../MTRPawnBox/mtrpawn.hpp"
#include <QWidget>
namespace MTR {
class GameWidget
: public QWidget { Q_OBJECT
public:
public slots:
void setDraggedPawnPointer(const PawnBox::Pawn *pw);
//void debugOne() { qDebug(draggedPawn->id().toStdString().c_str()); }
protected:
private:
MTR::PawnBox::Pawn *draggedPawn;
};
}
#endif
#ifndef GAMEWIDGET_SAFETY_DECLARATION
#define GAMEWIDGET_SAFETY_DECLARATION
class QPaintEvent;
class QMouseEvent;
class QDragMoveEvent;
class QDragEnterEvent;
#include "../MTRPawnBox/mtrpawn.hpp"
#include <QWidget>
namespace MTR {
class GameWidget : public QWidget {
Q_OBJECT
public:
GameWidget(QWidget *parent = 0);
public slots:
void setDraggedPawnPointer(const PawnBox::Pawn *pw);
//void debugOne() { qDebug(draggedPawn->id().toStdString().c_str()); }
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
private:
MTR::PawnBox::Pawn *draggedPawn;
};
}
#endif
To copy to clipboard, switch view to plain text mode
void GameWidget::setDraggedPawnPointer(const PawnBox::Pawn *pw) {
if(pw) draggedPawn = const_cast<PawnBox::Pawn *>(pw);
else draggedPawn = 0;
}
void GameWidget::setDraggedPawnPointer(const PawnBox::Pawn *pw) {
if(pw) draggedPawn = const_cast<PawnBox::Pawn *>(pw);
else draggedPawn = 0;
}
To copy to clipboard, switch view to plain text mode
All is connected in main window widget:
connect(pawnBox,SIGNAL(dragHasBegun(const MTR::PawnBox::Pawn *)),gameScreen,SLOT(setDraggedPawnPointer(const MTR::PawnBox::Pawn *)));
connect(pawnBox,SIGNAL(dragHasBegun(const MTR::PawnBox::Pawn *)),gameScreen,SLOT(setDraggedPawnPointer(const MTR::PawnBox::Pawn *)));
To copy to clipboard, switch view to plain text mode
where
MTR::PawnBox *pawnBox;
MTR::GameWidget *gameScreen;
MTR::PawnBox *pawnBox;
QWidget *firstMenuScreen;
QWidget *rulesScreen;
QWidget *resultsScreen;
QWidget *gameChoiceScreen;
QWidget *globalRecordsScreen;
QWidget *localRecordsScreen;
MTR::GameWidget *gameScreen;
To copy to clipboard, switch view to plain text mode
Bookmarks