【发布时间】:2015-01-15 12:07:57
【问题描述】:
我想通过单击项目中的任意位置来设置 FocusScope 的 activeFocus。 有没有办法在整个项目上没有 MouseArea 的情况下实现这一点?因为它必须覆盖 Item 中的所有元素,使它们无法点击。
我对 QtQuick/QML 还很陌生,很难理解如何正确实现 FocusScopes。我读过关于传播点击信号的文章,但无法让它发挥作用。
假设我有这样的东西(没有 FocusScopes 以提高可读性):
Rectangle
{
id: outerRectangle
width: 1000
height: 1000
// various controls in here
Rectangle
{
id: innerRectangle
anchors.centerIn: parent
width: 200
height: 200
// even more controls in here
}
}
当我单击外矩形上的任意位置时,我希望外矩形获得活动焦点,反之亦然。但是两个 Rectangle 上的所有控件仍然必须正常工作。 我怎样才能做到这一点?
【问题讨论】:
-
MouseArea可以设置为不同的z级别,这样它就不会覆盖其他控件。除此之外,我不知道您是否已经read this,但它可能会引起您的兴趣。还要考虑this example。希望对您有所帮助。 -
设置 Z 并没有帮助,很遗憾。只要 MouseArea 位于另一个控件下方,它就不会再注册单击。