首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGraphicsItem插入顺序

QGraphicsItem插入顺序
EN

Stack Overflow用户
提问于 2011-05-31 04:42:43
回答 1查看 3.1K关注 0票数 4

我有一个用QGraphicsScene + QGraphicsView组织QGraphicsItem的项目。所有图形项目都是可移动和可选择的。

问题是:当我在场景中插入新的QGraphicsItem并且这个项目比以前的项目更大时,我不能通过鼠标选择它。

来自Qt文档:

默认情况下,所有同级项都按插入顺序堆叠(即添加的第一项>在添加的下一项之前绘制)。如果两个项目的Z值不同,则在顶部绘制具有最高Z值的item >。当Z值相同时,插入>顺序将决定堆叠顺序。

问题:如何更改图形项的插入顺序?

我尝试为mousePressEvent子类QGraphicsView,并使用stackBefore()方法帮助更改插入顺序。如果所有的项目混合在一起,相互重叠,需要做大量的点击来选择所需的项目。

代码语言:javascript
复制
void View::mousePressEvent ( QMouseEvent * event )
{

MyGraphicsGroup *last = 0;
QGraphicsItem *first = 0;
foreach( QGraphicsItem *item, items(event->pos()) )
{
    if( !first ) first = item;

    if( item->flags() & QGraphicsItem::ItemIsSelectable )
    {
        last = qgraphicsitem_cast<MyGraphicsGroup*>(item);
    }
}

if( last )
{
    first->stackBefore(last);
}

inherited::mousePressEvent( event );
}
EN

回答 1

Stack Overflow用户

发布于 2011-05-31 11:26:04

刚在docu找到的:

“您可以通过调用setZValue()来设置项的堆叠顺序”

希望能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6183079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档