2011年1月19日 星期三

QGraphicsItem的碰撞偵測

先利用collidingItems求出所有item發生碰撞的QGraphicsItem,
在利用qgraphicsitem_cast來過濾QGraphicsItem類別



    QGraphicsScene *scene = new QGraphicsScene;
    for(int i=0;i<20;i++){
        for(int j=0;j<20;j++){
            scene->addRect(i*20,j*20,20,20);
        }
    }
    QGraphicsPixmapItem *item = scene->addPixmap(QPixmap("r://img.png"));
    QList<QGraphicsItem *> list = scene->collidingItems(item);
    foreach(QGraphicsItem *l, list){
        QGraphicsRectItem *led = qgraphicsitem_cast<QGraphicsRectItem *>(l);
        if(led!=0){
            led->setBrush(QBrush(Qt::yellow));
        }
    }

沒有留言: