//重寫虛函數 QRectF boundingRect() const;//預計繪制的區域 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget /* = 0 */);//繪制
QRectF MyItem::boundingRect() const { qreal adjust = 0.5; return QRectF(-100 - adjust, -100 - adjust, 200 + adjust, 200 + adjust); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QBrush brush(QColor(200,125,125)); painter->setBrush(brush); painter->drawRect(-100, -100, 200, 200); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene; scene.setSceneRect(-300, -300, 600, 600);//場景大小 scene.setItemIndexMethod(QGraphicsScene::NoIndex);//線性索引 MyItem *item = new MyItem; scene.addItem(item); scene.addText("Hello World!"); QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing);//指定Render標簽,抗鋸齒 view.setCacheMode(QGraphicsView::CacheBackground);//緩存模式 view.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);//場景重繪更新方式 view.setDragMode(QGraphicsView::ScrollHandDrag);//拖動模式,鼠標可拖動 view.resize(400, 300); view.show(); //scene.removeItem(scene.itemAt(-10, -10, view.transform())); return a.exec(); }