PROBLEM:
Qt Code:
  1. Object::connect: No such signal MTR::PawnBox::dragHasBegun(const MTR::PawnBox::Pawn*)
To copy to clipboard, switch view to plain text mode 

CODE:
Qt Code:
  1. #ifndef PAWNBOX_SAFETY_DECLARATION
  2. #define PAWNBOX_SAFETY_DECLARATION
  3. class QPixmap;
  4. #include <QWidget>
  5. #include <QRectF>
  6. #include <QColor>
  7. #include <QMap>
  8.  
  9. namespace MTRUTIL {
  10. const int AMOUNT_OF_PAWNS = 8;
  11. }
  12.  
  13. namespace MTR {
  14. class PawnBox : public QWidget {
  15. Q_OBJECT
  16. public:
  17. PawnBox(QWidget *parent = 0);
  18. ~PawnBox() { delete px; }
  19. //klasa pionka
  20. class Pawn {
  21. public:
  22. Pawn();
  23. Pawn(QColor &color, QRectF &rec, QString &id);
  24. ~Pawn();
  25. const QColor &color() const { return color_; }
  26. const QRectF &rectF() const { return rectF_; }
  27. const QString &id() const { return id_; }
  28. const QPixmap &internalPicture() const { return dragPicture; }
  29. private:
  30. void paintInternalPicture();
  31. QColor color_;
  32. QRectF rectF_;
  33. QString id_;
  34. QPixmap dragPicture;
  35. };
  36. //
  37. signals:
  38. void dragHasBegun(const Pawn *pw);
  39. protected:
  40. void paintEvent(QPaintEvent *event);
  41. void mousePressEvent(QMouseEvent *event);
  42. void mouseMoveEvent(QMouseEvent *event);
  43. void dragMoveEvent(QDragMoveEvent *event);
  44. void dragEnterEvent(QDragEnterEvent *event);
  45. private:
  46. void startDrag();
  47. QPoint startPos;
  48. QPixmap *px;
  49. bool insidePawn;
  50. Pawn *draggedPawn;
  51. QMap<int, Pawn> pawnCollection;
  52. };
  53. }
  54. #endif
To copy to clipboard, switch view to plain text mode 

Qt Code:
  1. void PawnBox::startDrag() {
  2. QMimeData *mimeData = new QMimeData;
  3. mimeData->setText(draggedPawn->id());
  4. QDrag *drag = new QDrag(this);
  5. drag->setPixmap(draggedPawn->internalPicture());
  6. drag->setMimeData(mimeData);
  7. drag->setHotSpot(QPoint(10,10));
  8.  
  9. drag->setDragCursor(*px,Qt::MoveAction);
  10. drag->setDragCursor(*px,Qt::CopyAction);
  11. const Pawn *pt = draggedPawn;
  12. emit dragHasBegun(pt);
  13. drag->start(Qt::MoveAction);
  14.  
  15. }
To copy to clipboard, switch view to plain text mode 

Qt Code:
  1. #ifndef GAMEWIDGET_SAFETY_DECLARATION
  2. #define GAMEWIDGET_SAFETY_DECLARATION
  3. #include "../MTRPawnBox/mtrpawn.hpp"
  4. #include <QWidget>
  5.  
  6. namespace MTR {
  7. class GameWidget : public QWidget {
  8. Q_OBJECT
  9. public:
  10. GameWidget(QWidget *parent = 0);
  11. public slots:
  12. void setDraggedPawnPointer(const PawnBox::Pawn *pw);
  13. //void debugOne() { qDebug(draggedPawn->id().toStdString().c_str()); }
  14. protected:
  15. void paintEvent(QPaintEvent *event);
  16. void mousePressEvent(QMouseEvent *event);
  17. void mouseMoveEvent(QMouseEvent *event);
  18. void dragMoveEvent(QDragMoveEvent *event);
  19. void dragEnterEvent(QDragEnterEvent *event);
  20. private:
  21. MTR::PawnBox::Pawn *draggedPawn;
  22. };
  23. }
  24. #endif
To copy to clipboard, switch view to plain text mode 

Qt Code:
  1. void GameWidget::setDraggedPawnPointer(const PawnBox::Pawn *pw) {
  2. if(pw) draggedPawn = const_cast<PawnBox::Pawn *>(pw);
  3. else draggedPawn = 0;
  4. }
To copy to clipboard, switch view to plain text mode 

All is connected in main window widget:
Qt Code:
  1. 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
Qt Code:
  1. MTR::PawnBox *pawnBox;
  2. QWidget *firstMenuScreen;
  3. QWidget *rulesScreen;
  4. QWidget *resultsScreen;
  5. QWidget *gameChoiceScreen;
  6. QWidget *globalRecordsScreen;
  7. QWidget *localRecordsScreen;
  8. MTR::GameWidget *gameScreen;
To copy to clipboard, switch view to plain text mode