【发布时间】:2011-03-28 21:04:19
【问题描述】:
我一直在创建 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' 是汽车或公共汽车或任何其他车辆
}
【问题讨论】: