Interactiveitem工程在上个例子的基础之上添加了鼠标事件,从而实现交互。
程序依此图而作:
程序代码如下:
//main.cpp
#include <QtGui/QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include "smileyitem.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView w;
QGraphicsScene scene;
w.setScene(&scene);
SmileyItem *item = new SmileyItem;
scene.addItem(item);
item->setFlag(QGraphicsItem::ItemIsMovable);
w.setRenderHint(QPainter::Antialiasing);
w.show();
w.resize(600,400);
return a.exec();
}
//smileyitem.h
#ifndef SMILEYITEM_H
#define SMILEYITEM_H
#include <QGraphicsItem>
class SmileyItem : public QGraphicsItem
{
public:
SmileyItem();
QRectF boundingRect() const;
QPainterPath shape() const;
void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0);
protected:
void paintEye(QPainter *painter, const QPointF &pt, const QPointF &focus, bool bigEye);