您的位置:首页 > 编程语言 > Qt开发

Qt学习例子10——Compsegraphicsitem

2011-04-08 13:15 393 查看
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();

}

 

代码是依照此图设计的:

 

 
 
 





程序运行的效果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt path