diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/main.o b/crazyflie_ws/sandbox/crazypkg/gui/untitled/main.o index 0a3ad2ccf7d8622d495ea71699a78307060cf097..d56bff813452ec9a4a8adac250fb2d4a805efadb 100644 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/main.o and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/main.o differ diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.cpp b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.cpp index 4ae469dc9d380187a9f9853106c81ab9c986d3d6..8e1a78e40cca35efcf2af0b6d8af6b69add906a5 100644 --- a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.cpp +++ b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.cpp @@ -55,12 +55,15 @@ void MainGUIWindow::_refresh_tabs() void MainGUIWindow::_init() { - scene = new myGraphicsScene(this); + scene = new myGraphicsScene(ui->frame_drawing); + //scene->setSceneRect(QRectF(QPointF(-100, 100), QSizeF(200, 200))); ui->graphicsView->setScene(scene); - QRect rect(10, 20, 80, 60); + item1 = new QGraphicsRectItem(0,0,100,100); + item1->setBrush(QBrush(Qt::blue)); scene->addText("Hello world!"); - scene->addRect(rect, QPen(Qt::black), QBrush(Qt::blue)); + // scene->addRect(rect, QPen(Qt::black), QBrush(Qt::blue)); + scene->addItem(item1); ui->spinBoxNumCrazyflies->setMaximum(N_MAX_CRAZYFLIES); _refresh_tabs(); diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.h b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.h index 06e12488ea49607a3a96959f54018df6d8b00218..66f50d3fbbecce9bf295a290a8654b26a146ad89 100644 --- a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.h +++ b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.h @@ -6,6 +6,7 @@ #include <QMainWindow> #include <QTimer> #include <QGridLayout> +#include <QGraphicsRectItem> #ifndef DEBUG_GUI #include "ros/callback_queue.h" @@ -137,7 +138,7 @@ private: Ui::MainGUIWindow *ui; myGraphicsScene* scene; //TODO: make a subclass from QGraphicScene class, mouse events - + QGraphicsRectItem* item1; void _init(); void _refresh_tabs(); diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.o b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.o index 5842b899542a3775b789b2c120dad92f85ad3f85..f86ddb14309472888a62c533595bd8b9bac9b511 100644 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.o and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/mainguiwindow.o differ diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_mainguiwindow.o b/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_mainguiwindow.o index fcaa169895bc162359958b332d835fff7ad863f7..f1e4a3a9a35e7e7adcaaa17ab1662178cf55dd52 100644 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_mainguiwindow.o and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_mainguiwindow.o differ diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_myGraphicsScene.o b/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_myGraphicsScene.o index 10a7b46eedaac352de220e5ff84174cb6256dd81..615fa7590c5f056cc8a639b7a6ef129d851066a0 100644 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_myGraphicsScene.o and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/moc_myGraphicsScene.o differ diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.cpp b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.cpp index cff4d244c56cbce54cd0fff9e5102e45f7e6d53f..5d9266a04a2bd08330c70875530b75386e754909 100644 --- a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.cpp +++ b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.cpp @@ -2,15 +2,17 @@ #include <QGraphicsSceneMouseEvent> #include <QRect> +#include <QGraphicsRectItem> myGraphicsScene::myGraphicsScene(QObject *parent) : QGraphicsScene(parent) { pen = new QPen(Qt::black); brush = new QBrush(Qt::blue); - rect = 0; - // startedRect = false; - firstClick = true; + + tmp_rect = 0; + startedRect = false; + // firstClick = true; } @@ -20,33 +22,43 @@ void myGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) return; - // rect = new QRect((mouseEvent->scenePos()).toPoint(), (mouseEvent->scenePos()).toPoint()); - // addRect(*rect, *pen, *brush); - // startedRect = true; + // Drag and drop approach - if(firstClick) - { - p1 = new QPoint((mouseEvent->scenePos()).toPoint()); - QRect tmp_rect(*p1, *p1); - addRect(tmp_rect, *pen, *brush); - } - else - { - p2 = new QPoint((mouseEvent->scenePos()).toPoint()); - QRect tmp_rect(*p2, *p2); - addRect(tmp_rect, *pen, *brush); - } + startedRect = true; + p1 = new QPointF(mouseEvent->scenePos()); + tmp_rect = new QRectF(*p1, *p1); + // addRect(*tmp_rect, *pen, *brush); + tmp_rect_item = new QGraphicsRectItem(*tmp_rect); + rectangles.push_back(tmp_rect_item); + addItem(rectangles.back()); + + // Two-clicks approach + // if(firstClick) + // { + // p1 = new QPointF(mouseEvent->scenePos()); + // tmp_rect_item = addRect(QRect(p1->toPoint(), p1->toPoint()), *pen, *brush); //save it to remove it after + // } + // else + // { + // p2 = new QPointF(mouseEvent->scenePos()); + // // QRect tmp_rect(*p2, *p2); + // // addRect(tmp_rect, *pen, *brush); + // } + + + update(); QGraphicsScene::mousePressEvent(mouseEvent); } void myGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) { - // if(startedRect) - // { - // rect->moveBottomRight((mouseEvent->scenePos()).toPoint()); - // qDebug("Mouse Position: %d, %d", (mouseEvent->scenePos()).toPoint().x(), (mouseEvent->scenePos()).toPoint().y()); - // qDebug("Rectangle BottomRight Position: %d, %d", rect->bottomRight().x(), rect->bottomRight().y()); - // } + if(startedRect) + { + tmp_rect_item->setRect(QRectF(*p1, mouseEvent->scenePos())); + qDebug("Mouse Position: %d, %d", (mouseEvent->scenePos()).toPoint().x(), (mouseEvent->scenePos()).toPoint().y()); + qDebug("Rectangle BottomRight Position: %d, %d", tmp_rect->bottomRight().x(), tmp_rect->bottomRight().y()); + update(); + } QGraphicsScene::mouseMoveEvent(mouseEvent); } @@ -55,20 +67,33 @@ void myGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) if (mouseEvent->button() != Qt::LeftButton) return; - // rect = 0; - // startedRect = false; - if(firstClick) - { - firstClick = false; - } - else - { - rect = new QRect(*p1, *p2); - addRect(*rect, *pen, *brush); - p1 = 0; - p2 = 0; - rect = 0; - firstClick = true; - } + + // Drag and drop approach: + + tmp_rect = 0; + startedRect = false; + + + // Two-clicks approach + + // if(firstClick) + // { + // firstClick = false; + // } + // else + // { + // removeItem(tmp_rect_item); + // tmp_rect_item = new QGraphicsRectItem(QRectF(*p1, *p2)); + // // *tmp_rect, *pen, *brush); + // rectangles.push_back(tmp_rect_item); + + // addItem(rectangles.back()); + // p1 = 0; + // p2 = 0; + // tmp_rect = 0; + // firstClick = true; + // } + + update(); QGraphicsScene::mouseReleaseEvent(mouseEvent); } diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.h b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.h index 96c7e3d5c4ca8723a3e9512dacf9e4c1abcbc55a..703c1c0bc556a293c4771458976ace787ddf792b 100644 --- a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.h +++ b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.h @@ -1,5 +1,7 @@ -#ifndef DIAGRAMSCENE_H -#define DIAGRAMSCENE_H +#ifndef MYGRAPHICSSCENE_H +#define MYGRAPHICSSCENE_H + +#include <vector> #include <QGraphicsScene> @@ -14,6 +16,7 @@ class myGraphicsScene : public QGraphicsScene public: explicit myGraphicsScene(QObject *parent = 0); + std::vector<QGraphicsRectItem*> rectangles; public slots: @@ -27,13 +30,14 @@ protected: private: QPen* pen; QBrush* brush; - QRect* rect; - QPoint* p1; - QPoint* p2; + QRectF* tmp_rect; + QGraphicsRectItem* tmp_rect_item; + QPointF* p1; + QPointF* p2; - bool firstClick; + // bool firstClick; - // bool startedRect; + bool startedRect; }; #endif diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.o b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.o index 7fb1f539f4f9f389b25f804ae5caaa9127a11f81..6c385fa8f522057f3f8e5b50a75a1aa18306a988 100644 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.o and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/myGraphicsScene.o differ diff --git a/crazyflie_ws/sandbox/crazypkg/gui/untitled/untitled b/crazyflie_ws/sandbox/crazypkg/gui/untitled/untitled index d537e2520d18e3a42e5b1b0159507ee6e31d47a3..110f9d35e94a3f3cd234afba404fe8f61b4be36f 100755 Binary files a/crazyflie_ws/sandbox/crazypkg/gui/untitled/untitled and b/crazyflie_ws/sandbox/crazypkg/gui/untitled/untitled differ