//! [0] item->scene().sceneRect().intersects(item->sceneBoundingRect()); //! [0] //! [1] class TileScene : public QGraphicsScene { public: ... void setTiles(const QPixmap &pixmap, int h, int v, int tileHeight, int tileWidth); void setTile(int x, int y, int tilenum); private: QRect tileRect(int x, int y) const; QRect tileRect(int tileNum) const; QVector > tiles; QPixmap tilePixmap; int tileW, tileH; int hTiles, vTiles; }; //! [1] //! [2] void TileScene::setTiles(const QPixmap &pixmap, int h, int v, int tileHeight, int tileWidth) { tilePixmap = pixmap; tileW = tileWidth; tileH = tileHeight; hTiles = h; vTiles = v; tiles.resize(v); for (int y = 0; y < v; ++y) tiles[y].resize(h); } //! [2] //! [3] void TileScene::setTile(int x, int y, int tilenum) { tiles[y][x] = tilenum; update(tileRect(x, y)); } //! [3] //! [4] QRect TileScene::tileRect(int x, int y) const { return QRect(x * tileW, y * tileH, tileW, tileH); } //! [4] //! [5] QRect TileScene::tileRect(int tileNum) const { int numHTiles = tilePixmap.width() / tileW; int numVTiles = tilePixmap.height() / tileH; return tileRect(tileNum % numHTiles, tileNum / numHTiles); } //! [5] //! [6] void drawBackground(QPainter *painter, const QRectF &exposed) { for (int y = 0; y < vTiles; ++y) { for (int x = 0; x < hTiles; ++x) { QRect destRect = tileRect(x, y); if (exposed.intersects(destRect)) { painter->drawPixmap(destRect, tilePixmap, tileRect(tiles[y][x])); } } } } //! [6] //! [7] // Before Q3CanvasEllipse ellipse(10, 10); // After QGraphicsEllipseItem ellipse(-5, -5, 10, 10); //! [7] //! [8] static QPainterPath fromControlPoints(const Q3PointArray &pa) { QPainterPath path; path.moveTo(pa[0]); for (int i = 1; i < pa.size(); i += 3) path.cubicTo(pa[i], pa[(i + 1) % pa.size()], pa[(i + 2) % pa.size()]); return path; } //! [8] //! [9] wildcardPath.replace("%1", "*"); QFileInfo fi(wildcardPath); QList frames; foreach (QString entry, QDir(fi.path(), fi.fileName()).entryList()) frames << QPixmap(fi.path() + "/" + entry); //! [9]