1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>
#include <QGraphicsSceneMouseEvent>
#include <QDebug>
// QGraphicsView subclass
class GraphicsView : public QGraphicsView {
public:
GraphicsView(QGraphicsScene *scene) : QGraphicsView(scene) {}
};
// QGraphicsRectItem subclass
class RectItem : public QGraphicsRectItem {
public:
RectItem(int x, int y, int width, int height) : QGraphicsRectItem(x, y, width, height) {}
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};
// mouse events on RectItem items: make drag&drop bug! (see flag ItemIsMovable)
void RectItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
qDebug() << "released mouse";
event->accept();
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// test drag&drop with flag ItemIsMovable
QGraphicsScene scene(0, 0, 400, 300);
RectItem *rect = new RectItem(100, 100, 40, 40);
rect->setBrush(QColor(Qt::blue));
rect->setPen(Qt::NoPen);
rect->setFlag(rect->ItemIsMovable, true);
scene.addItem(rect);
GraphicsView view(&scene);
view.setBackgroundBrush(QColor(255, 255, 200));
view.show();
return app.exec();
} |
Partager