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 MainWindow::slotAddEllipseItem() //在场景中加入一个椭圆形图元 { QGraphicsEllipseItem *item = new QGraphicsEllipseItem(QRectF(0,0,80, 60)); item->setPen(Qt::NoPen); 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); }
// draws the cv points void CCurveScene::drawPoints() { while (_circleObjects.size()) { delete _circleObjects[0]; _circleObjects.erase(_circleObjects.begin()); } const int numCV = _cvs.size(); for (int i = 0; i < numCV; i++) { const T_CURVE::CV& pt = _cvs[i]; QPen pen; if (i == _selectedItem) { pen = QPen(QColor(255,170,0),1.0); } else { pen = QPen(Qt::black,1.0); } _circleObjects.push_back(addEllipse(pt._pos*_width-4, _height+3, 8, 8, pen, QBrush(QColor(int(255 * pt._val[0] +0.5), int(255 * pt._val[1] + 0.5), int(255 * pt._val[2] + 0.5))))); QGraphicsEllipseItem *circle = _circleObjects.back(); circle->setFlag(QGraphicsItem::ItemIsMovable, true); circle->setZValue(2); } }
void GalaGV::showESysteme(const QString &ally, bool show) { if(!ally.isEmpty()){ mData->showESysteme.first = ally; mData->showESysteme.second = show; int gala =mData->gala; QString key = ally+";"+QString::number(gala); if(!mData->eSysteme.contains(key)){ QList<ESystem> l =mDB->eSysteme(ally,gala); QString cords; QHash<QString,QGraphicsEllipseItem*> hash; for (int var = 0; var < l.size(); ++var) { const ESystem & s = l.at(var); cords = s.cords; if(cords== "") cords = mData->systeme.value(mData->gala).value(s.id)->data(Cords).toString(); QGraphicsEllipseItem *item = makeMarkerItem(cords,s.id,Ally,s.isWerft?Qt::yellow:QColor("#E87A1A"),Mark); if(s.isChecked){ item->setOpacity(0.5); } item->setData(Esystem,QVariant::fromValue(s)); item->setFlag(QGraphicsItem::ItemIsSelectable,true); item->setToolTip(s.namen.join(",")+" : "+(s.isWerft?"Werft":"")); hash.insert(s.id,item); scene()->addItem(item); } mData->eSysteme.insert(key,hash); qDebug() << Q_FUNC_INFO << mData->eSysteme.keys()<< mData->eSysteme.value(key).count(); } if(show) showItems(mData->eSysteme.value(key)); else hideItems(mData->eSysteme.value(key)); } }