QGraphicsView にあるシーンに楕円を描画する関数があります。別の関数には、楕円と同じ XY をクリックしたかどうかを確認するクリック イベントがあり、その XY かどうかを確認するためにマップを反復処理します。オブジェクトが返される場合、特定のオブジェクトに割り当てられます
ただし、楕円をクリックすると、データを見つけるためにxyなどを検索する代わりに、楕円にデータがバインドされるようにする方法を見つけることを検討しています
アイテムにデータを割り当てることができる関数 setdata を見つけましたが、関数が単純にデータを描画して追加するのを見て、それに関連するデータを実際に抽出する方法がわかりません。アイテムはシーンであり、データはアイテムにバインドする必要がありますが、それがどのように行われたのかわかりません。ドキュメントを検索しても答えが得られませんでした
ここに私の機能があります
void GUI::paintDot(double x, double y, double Id)
{
// Decalre a QPen for Painting dots
QPen pen;
// set the pen colour
pen.setColor(Qt::white);
if(x < m_height && y < m_width)
{
// Add ellipse at the x y position passed in
scene2->addEllipse(x, y, 1.5, 1.5, pen, QBrush(Qt::SolidPattern))->setData(0, Id);
}
}
0 は任意のキー値であり、実際にキー値を表すものに変更する必要がありますが、この例では問題ありません