我正在使用 QGraphicsProxyWidget 对象(A& B)来表示一些常规的GUI元素,例如我的 QGraphicsScene 中的comboxbox。这些代理对象(从逻辑上看)链接到常规的 QGraphicsItem 实例C.
在我的应用程序的某些时候,我需要确保这个项目C加上它的代理对象A& B具有比周围元素更高的Z水平。但是,当我尝试遍历项目C的所有子项(和孙项)时,代理元素永远不会被访问,因此Z值永远不会更新=>我的项目C有一个新的Z值,代理A& B不会,因此被遮挡。
我目前正在添加这样的代理:
m_pProxy = m_pScene->addWidget(pCombobox);
答案 0 :(得分:1)
问题在于代理人A&如果添加了来自问题的代码片段,则B实际上不是项目C的子对象。如果需要直接关系,则需要按如下方式添加代理:
m_pProxy = new QGraphicsProxyWidget(pItem);
m_pProxy->setWidget(pCombobox);
m_pScene->addItem(m_pProxy);
通过手动创建代理对象,您可以指定所需的父元素(此处为常规项C),然后指定add it to the scene。因此,循环遍历其子元素现在也会返回代理,并且可以根据需要对其Z值进行处理。