一、main.cppcode
#include <QApplication> #include <QGraphicsScene> #include <QGraphicsView> #include "myitem.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene(0, 0, 250, 250); MyItem *item = new MyItem; item->setPos(24, 24); scene.addItem(item); QGraphicsView view(&scene); view.show(); return a.exec(); }
二、myitem.hget
#ifndef MYITEM_H #define MYITEM_H #include <QGraphicsItem> #include <QPainter> #include <QWidget> #include <QDebug> #include <QGraphicsSceneMouseEvent> class MyItem : public QGraphicsItem { public: MyItem(QGraphicsItem *parent = 0){} ~MyItem(){} QRectF boundingRect() const { return QRectF(0, 0, 200, 200); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { painter->setRenderHint(QPainter::Antialiasing); painter->setBrush(Qt::blue); painter->drawRoundedRect(0, 0, 200, 200, 5, 5); } protected: void mousePressEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse button clicked"); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse released clicked"); } void mouseMoveEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse move"); } void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *){ qDebug("Mouse double clicked"); } }; #endif // MYITEM_H