Au début, je vous suggère de lire QGraphicsView
exemples et documents attentivement, je recommande comme point de départ Diagram Scene Example et Elastic Nodes Example. Parce que le travail de cadre QGraphicsView est intelligent si vous l'utilisez intelligemment sinon vous pouvez payer des pénalités en performance.
Et maintenant votre question:
toute réponse
est liée à qgraphicsitem_cast
, comment l'utiliser? Tout d'abord, permettez-moi de fournir quelques initialisations regardez le code ci-dessous au début, je ajoute trois rectangles à la scène et de définir leurs drapeaux.
void MainWindow::on_btnInit_clicked()
{
QColor color = Qt::red;
QBrush brush = Qt::SolidPattern;
brush.setColor(color);
QRect * rectObject = new QRect(QPoint(0,0) , QSize(20,20));
scene.addRect(*rectObject , color, brush);
rectObject = new QRect(QPoint(0,30) , QSize(20,20));
color = Qt::green;
brush.setColor(color);
scene.addRect(*rectObject , color, brush);
rectObject = new QRect(QPoint(0,60) , QSize(20,20));
color = Qt::blue;
brush.setColor(color);
scene.addRect(*rectObject , color, brush);
foreach (QGraphicsItem *item,ui->graphicsView->scene()->items()) {
item->setFlag(QGraphicsItem::ItemIsMovable , true);
item->setFlag(QGraphicsItem::ItemIsSelectable , true);
}
}
J'ai mis ItemIsMovable
et ItemIsSelectable
drapeaux ainsi pour les articles peuvent être sélectionnés.
et maintenant changer la couleur de l'élément sélectionné.
void MainWindow::on_btnSelectItem_clicked()
{
foreach (QGraphicsItem *item, ui->graphicsView->scene()->selectedItems())
{
QGraphicsRectItem *rect = qgraphicsitem_cast<QGraphicsRectItem *>(item);
if (!rect)
continue;
QBrush br(Qt::SolidPattern);
br.setColor(Qt::black);
rect->setBrush(br);
rect->update();
}
}
J'utilise QGraphicsRectItem
pour lancer des objets rectangulaires i ajoutés à la scène avant. Si vous voulez en savoir plus sur l'utilisation qgraphicsitem
lisez Exemple de nœuds élastiques.
@Rooter si vous voulez me fournir votre adresse e-mail pour envoyer le projet de test complet – saeed
@Rooter Il est préférable de poser une nouvelle question pour le redimensionnement de QGraphicsView – saeed
Merci beaucoup monsieur, je le ferai, merci pour votre mail:) – Rooter