• 10690阅读
  • 8回复

QGraphicsScene如何判断当前选中的item是items () 中的哪一个 [复制链接]

上一主题 下一主题
离线singforyou
 
只看楼主 正序阅读 楼主  发表于: 2010-06-02
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
QGraphicsScene中的items()方法会返回当前scene中的所有items,他是一个QList,我的问题是如何判断当前用鼠标选中的item是这个QList中的第几个?或者说在这个QList中的索引。
离线ker704334
只看该作者 8楼 发表于: 2010-06-04
试试看
DiagramItem  *item = qgraphicsitem_cast<DiagramItem *>(selectedItems().first())
离线sbtree
只看该作者 7楼 发表于: 2010-06-02
dynamic_cast<>(),C++标准库里面的函数
windows 7 + VC++2008 + Qt4.5.2
离线singforyou
只看该作者 6楼 发表于: 2010-06-02
"你用qobject_cast不就可以了. "
谢谢你的回答,QGraphicsItem不是继承自QObject,不能用aobject_cast转换。看看能不能想想别的办法。
离线sbtree
只看该作者 5楼 发表于: 2010-06-02
用这个函数就可以了selectedItems()
windows 7 + VC++2008 + Qt4.5.2
离线xlttap

只看该作者 4楼 发表于: 2010-06-02
引用第3楼singforyou于2010-06-02 11:50发表的  :
谢谢楼上的回答。我添加到scene中的item是自己定义的QGraphicsRectItem的子类,因为Scene的items()方法得到的QGraphicsItem的指针,我用你的方法判断的时候它提示类型转换错误的问题,该怎么解决呢?

你用qobject_cast不就可以了.
我简单我快乐
离线singforyou
只看该作者 3楼 发表于: 2010-06-02
谢谢楼上的回答。我添加到scene中的item是自己定义的QGraphicsRectItem的子类,因为Scene的items()方法得到的QGraphicsItem的指针,我用你的方法判断的时候它提示类型转换错误的问题,该怎么解决呢?
离线robertkun

只看该作者 2楼 发表于: 2010-06-02
QList<QGraphicsItem*> selectedItemList = selectedItems();
QGraphicsItem* selectedItem = selectedItemList.front();

int index = 0;
foreach(QGraphicsItem* item, itemlist)
{
     if(item == selectedItem)
          index ++;
}

不知道这样可不可以~
                                              简单的生活使人快乐!
离线robertkun

只看该作者 1楼 发表于: 2010-06-02
我想用指针判断一下就可以了吧,
如果指针相同那就是选中的item。。。
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个