Compsegraphicsitem工程主要是介绍QGraphicsItem的应用,用于组织绘图结构,代码如下:
#include <QtGui/QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>
QGraphicsItem *addSmiley() {
QPen thickPen(Qt::black);
thickPen.setWidth(2);
// add face
QGraphicsEllipseItem *face = new QGraphicsEllipseItem(QRect(-50, -50, 100, 100));
face->setPen(Qt::NoPen);
face->setBrush(Qt::yellow);
// enter your code here
// add eyes
QGraphicsEllipseItem *leftEye = new QGraphicsEllipseItem(QRect(-21, -37, 12, 24), face);
leftEye->setPen(QPen(Qt::black));
leftEye->setBrush(Qt::white);
QGraphicsEllipseItem *leftEyeBall = new QGraphicsEllipseItem(QRect(-16.5, -26.5, 3, 3),leftEye);
leftEyeBall->setPen(QPen(Qt::black));
leftEyeBall->setBrush(Qt::black);
QGraphicsEllipseItem *rightEye = new QGraphicsEllipseItem(QRect(9, -37, 12, 24), face);
rightEye->setPen(QPen(Qt::black));
rightEye->setBrush(Qt::white);
QGraphicsEllipseItem *rightEyeBall = new QGraphicsEllipseItem(QRect(14.5, -26.5, 3, 3),rightEye);
rightEyeBall->setPen(QPen(Qt::black));
rightEyeBall->setBrush(Qt::black);
// add smile
QPainterPath path;
path.arcMoveTo(QRectF(-33,-15,66,50),0);
path.arcTo(QRectF(-33,-15,66,50),-0,-180);
QGraphicsPathItem *smile=new QGraphicsPathItem(path,face);
//QGraphicsPathItem *smile=new QGraphicsPathItem(face);
smile->setPen(QPen(Qt::red));
return face;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView w;
QGraphicsScene scene;
w.setScene(&scene);
scene.addItem(addSmiley());
w.setRenderHint(QPainter::Antialiasing);
w.show();
return a.exec();
}
代码是依照此图设计的:
程序运行的效果如下: