私はQTアプリケーションを作成してきましたが、ある場所で攻撃しました。QGraphicsSceneから派生した独自のカスタムシーンクラスを作成しました。ここから、車、バスなどのアイテムを画面に追加します。
void Scene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if (mouseEvent->button() != Qt::LeftButton)
return;
DiagramItem *item;
switch (myMode) {
case InsertItem:
item = new DiagramItem(myItemType, myItemMenu);
addItem(item);
item->setPos(mouseEvent->scenePos());
emit itemInserted(item);
break;
上記のコードからわかるように、シーンにさまざまなアイテムを追加するためのQGraphicsPixmapItemから派生したDiagramItemクラスがあります。
switch (myDiagramType) {
case Bus:
setPixmap( QPixmap( Dir+"/images/bus1.jpg" ));
break;
case Car:
setPixmap( QPixmap( Dir+"/images/car4scene.png" ));
break;
case Truck:
ここで達成したいのは、シーン(車またはバス)からアイテムを選択するときに、車、バス、またはトラックのいずれかが選択されている車両を知りたいということです。私はこれをどうやって進めるのか分かりません。誰かが私を助けることができますか?このように選択したアイテムをシーンから取得します。
void MainWindow :: itemSelected(QGraphicsItem * item)//シーンから送信されたシグナル。{{
DiagramItem *ItemSelect = qgraphicsitem_cast<DiagramItem *>(item);
//「ItemSelect」が車またはバスまたはその他の車両であることを知りたい
}