确定选择了哪个QPixmapItem

时间:2016-11-07 16:02:18

标签: c++ qt

我正在将QGraphicsPixmapItems添加到我的场景中,我可以看到当我选择项目时,它会获得白色虚线选择矩形,但我很难从这个选择中获取任何数据。以下是我将它添加到场景中的方法。

void MainWindow::drawImage(curTarget *newTarget){
  QGraphicsPixmapItem *tgt = new QGraphicsPixmapItem;//new pixmap
  tgt = scene->addPixmap(newTarget->myIcon);//assign pixmap image
  tgt->setFlag(QGraphicsItem::ItemIsSelectable, true);
  scene->addItem(tgt);

}

我添加到场景中的每个PixmapItem都有与之关联的结构数据,当我选择QGraphicsScene内部的QGraphicsPixmapItem时,我需要能够检索该数据。如果在选择pixmapitem时显示选择矩形,是不是有一些简单的方法可以根据这个事实向我返回信息?指向所选内容的指针?

我确实已经实现了一个mousePressEvent方法,但我正在努力获得与之相关的任何内容。

void MainWindow::mousePressEvent(QMouseEvent *event){
qDebug() << "Clicked" << endl;
}

当我运行应用程序时,除了点击我的pixmapitems之外,我看到我的场景中到处都是Clicked。

我已经尝试过每个版本的mousePressEvents和实际做某事的版本,只要我不按我的pixmapitems就做一些事情。

1 个答案:

答案 0 :(得分:0)

感谢我在评论中收到的帮助,我将发布最终对我有用的内容。

      void MainWindow::drawImage(curTarget *newTarget)
    {
      QGraphicsPixmapItem *tgt = new QGraphicsPixmapItem
      tgt = scene->addPixmap(newTarget->myIcon);
      tgt->setFlag(QGraphicsItem::ItemIsSelectable, true);
      scene->addItem(tgt);
    }

添加新功能......

void MainWindow::whatIsSelected(){
QDebug() <<scene->selectedItems() << endl;}

然后我将场景连接到其他地方的窗口......

QObject::connect(scene, SIGNAL(selectionChanged()), this, SLOT(whatIsSelected);