Q图形项目插入顺序
QGraphicsItem inserting order
我有一个使用QGraphicsScene+QGraphicsView进行QGraphicsItem组织的项目。所有图形项目都可以移动和选择。
问题是:当我在场景中插入新的QGraphicsItem,并且这个项目比上一个项目大时,我无法用鼠标选择它。
来自Qt文档:
默认情况下,所有同级项目都按插入顺序堆叠(即,添加的第一个项目>绘制在添加的下一个项目之前)。如果两个项目的Z值不同,则在顶部绘制具有最高Z值的项目>。当Z值相同时,插入>顺序将决定堆叠顺序。
问题,如何更改图形项目的插入顺序?
我尝试为QGraphicsView创建mousePressEvent子类,并使用stackBefore()方法帮助更改插入顺序。如果所有项目混合在一起并相互重叠,则需要进行大量单击以选择所需项目。
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 );
}
刚刚在docu:中找到
"您可以设置项目的堆叠顺序通过调用setZValue()"
希望能有所帮助。
相关文章:
- 如何按数字顺序插入链表节点?
- 二叉树级别顺序插入 c++
- 按相反顺序插入矢量
- C++ 双向链表 - 插入同时保持递增顺序
- 在插入顺序已知时填充 Eigen3 稀疏矩阵的策略
- 如何修改函数以按C++的排序顺序插入每个项目
- 链接列表并按字母顺序插入字符串
- 按排序顺序将节点插入链表
- 编译器在遇到提取或插入运算符时处理信息(字符串、操纵器等)的顺序是什么?
- 在std ::或std :: unordered_set上保存插入顺序
- Unordered_set如何确定C 中的插入顺序
- 视觉使按顺序逐个插入C++
- 通过索引快速搜索,并将插入顺序保持在C 中
- 在STD :: MultiSet中维护插入顺序
- 双链接列表按顺序插入
- 我可以让 std::list 按顺序插入新元素吗?或者必须使用std::sort
- 在链表中按顺序插入节点
- c++中顺序插入/读取/删除最快的数据结构是什么?
- 如何按排序顺序插入
- 按字母顺序插入向量