void tst_QGraphicsEffect::itemHasNoContents() { QGraphicsRectItem *parent = new QGraphicsRectItem; parent->setFlag(QGraphicsItem::ItemHasNoContents); MyGraphicsItem *child = new MyGraphicsItem; child->setParentItem(parent); child->resize(200, 200); QGraphicsScene scene; scene.addItem(parent); QGraphicsView view(&scene); view.show(); QTest::qWaitForWindowShown(&view); #ifdef Q_OS_MAC if (QSysInfo::MacintoshVersion == QSysInfo::MV_LION) { QEXPECT_FAIL("", "QTBUG-26858", Abort); } #endif QTRY_COMPARE(child->nbPaint, 1); CustomEffect *effect = new CustomEffect; parent->setGraphicsEffect(effect); QTRY_COMPARE(effect->numRepaints, 1); for (int i = 0; i < 3; ++i) { effect->reset(); effect->update(); QTRY_COMPARE(effect->numRepaints, 1); } }
void tst_QGraphicsEffect::itemHasNoContents() { QGraphicsRectItem *parent = new QGraphicsRectItem; parent->setFlag(QGraphicsItem::ItemHasNoContents); MyGraphicsItem *child = new MyGraphicsItem; child->setParentItem(parent); child->resize(200, 200); QGraphicsScene scene; scene.addItem(parent); QGraphicsView view(&scene); view.show(); QTest::qWaitForWindowShown(&view); QTRY_COMPARE(child->nbPaint, 1); CustomEffect *effect = new CustomEffect; parent->setGraphicsEffect(effect); QTRY_COMPARE(effect->numRepaints, 1); for (int i = 0; i < 3; ++i) { effect->reset(); effect->update(); QTRY_COMPARE(effect->numRepaints, 1); } }
void DivePictureItem::setPixmap(const QPixmap &pix) { DivePixmapItem::setPixmap(pix); QRectF r = boundingRect(); QGraphicsRectItem *rect = new QGraphicsRectItem(0 - 10, 0 -10, r.width() + 20, r.height() + 20, this); rect->setPen(Qt::NoPen); rect->setBrush(QColor(Qt::white)); rect->setFlag(ItemStacksBehindParent); rect->setZValue(-1); QGraphicsRectItem *shadow = new QGraphicsRectItem(rect->boundingRect(), this); shadow->setPos(5,5); shadow->setPen(Qt::NoPen); shadow->setBrush(QColor(Qt::lightGray)); shadow->setFlag(ItemStacksBehindParent); shadow->setZValue(-2); }
void Scene::drawItem(QPointF const &destination) { if (itemType == "QGraphicsRectItem") { QGraphicsRectItem* rect = addRect(QRectF(destination.x(), destination.y(), 100, 70) , pen, brush); rect->setFlag(QGraphicsItem::ItemIsMovable, true); rect->setFlag(QGraphicsItem::ItemIsSelectable, true); } else if (itemType == "QGraphicsEllipseItem") { QGraphicsEllipseItem* ellipse = addEllipse(QRectF(destination.x(), destination.y(), 100, 70) , pen, brush); ellipse->setFlag(QGraphicsItem::ItemIsMovable, true); ellipse->setFlag(QGraphicsItem::ItemIsSelectable, true); } }
void CadControlPointsGroup::setPoints(QPolygonF *newPoints) { points = newPoints; QGraphicsRectItem * rectItem; for(int i = 0; i<points->size();i++) { QPointF p = points->value(i); QPointF p1 = p - QPointF(3,3); QPointF p2 = p + QPointF(3,3); QRectF r = QRectF(p1,p2); rectItem = new QGraphicsRectItem(r,this); rectItem->setFlag(QGraphicsItem::ItemIsMovable, true); rectItem->setFlag(QGraphicsItem::ItemIsSelectable, true); addToGroup(rectItem); } }
void MainWindow::slotAddRectItem() //在场景中加入一个长方形图元 { QGraphicsRectItem *item = new QGraphicsRectItem(QRectF(0,0,60,60)); QPen pen; pen.setWidth(3); pen.setColor(QColor(qrand()%256,qrand()%256,qrand()%256)); item->setPen(pen); item->setBrush(QColor(qrand()%256,qrand()%256,qrand()%256)); item->setFlag(QGraphicsItem::ItemIsMovable); scene->addItem(item); item->setPos((qrand()%int(scene->sceneRect().width()))-200,(qrand()%int(scene->sceneRect().height()))-200); }
int main(int argc, char **argv) { QApplication app(argc, argv); QGraphicsScene scene; QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100)); rect->setFlag(QGraphicsItem::ItemIsMovable); QGraphicsView view(&scene); view.show(); return app.exec(); }
void tst_QGraphicsEffect::boundingRect2() { CustomEffect *effect = new CustomEffect; QGraphicsRectItem *root = new QGraphicsRectItem; root->setGraphicsEffect(effect); QGraphicsRectItem *child = new QGraphicsRectItem; QRectF childRect(0, 0, 100, 100); child->setFlag(QGraphicsItem::ItemClipsChildrenToShape); child->setRect(childRect); child->setParentItem(root); QGraphicsRectItem *grandChild = new QGraphicsRectItem; QRectF grandChildRect(0, 0, 200, 200); grandChild->setRect(grandChildRect); grandChild->setParentItem(child); // Make sure the effect's bounding rect is clipped to the child's bounding rect. QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect)); // Disable ItemClipsChildrenToShape; effect's bounding rect is no longer clipped. child->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); // Add root item to a scene, do the same tests as above. Results should be the same. QGraphicsScene scene; scene.addItem(root); child->setFlag(QGraphicsItem::ItemClipsChildrenToShape); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect)); child->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); // Now add the scene to a view, results should be the same. QGraphicsView view(&scene); child->setFlag(QGraphicsItem::ItemClipsChildrenToShape); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect)); child->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); CustomEffect *childEffect = new CustomEffect; child->setGraphicsEffect(childEffect); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childEffect->boundingRectFor(childRect | grandChildRect))); child->setGraphicsEffect(0); QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); }