私はあなたが慎重にQGraphicsView
例やドキュメントを読むことを勧め、私は出発点としてDiagram Scene ExampleとElastic Nodes Exampleをお勧めします。そうでなければQGraphicsViewのフレームワークはスマートですので、のパフォーマンスでペナルティを支払うことがあります。
そして今、あなたの質問:
全体の答えは、それを使用する方法、qgraphicsitem_cast
に関連しているのですか?
最初にいくつかの初期化のコードを以下に示します。まず、シーンに3つの矩形を追加してフラグを設定します。
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