Qt学习例子10——Compsegraphicsitem

Compsegraphicsitem工程主要是介绍QGraphicsItem的应用,用于组织绘图结构,代码如下:

 

#include 
#include 
#include 
#include 
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();
}

 

代码是依照此图设计的:

 

 
 

 

Qt学习例子10——Compsegraphicsitem_第1张图片

程序运行的效果如下:

Qt学习例子10——Compsegraphicsitem_第2张图片

你可能感兴趣的:(Qt)