起初我建議你仔細閱讀QGraphicsView
實例和文檔,我建議Diagram Scene Example和Elastic Nodes Example爲出發點。由於QGraphicsView框架工作聰明,如果你使用它聰明,否則你可能會支付罰款性能。
現在你的問題:
全部答案是關係到qgraphicsitem_cast
,如何使用它?
首先讓我提供一些初始化下面的代碼,首先給場景添加三個矩形並設置它們的標誌。
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);
}
}
我已經設置ItemIsMovable
和ItemIsSelectable
標誌等等物品可能是可選擇的。
現在改變所選項目的顏色。
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();
}
}
我使用QGraphicsRectItem
來投射矩形物體,我以前添加到場景中。如果您想了解更多使用qgraphicsitem
,請閱讀彈性節點示例。
@Rooter如果你想給我你的電子郵件地址發送整個測試項目 – saeed
@Rooter最好問問一個新的問題調整大小的QGraphicsView – saeed
非常感謝你先生,我會這樣做,謝謝你的郵件: ) – Rooter