【问题标题】:Setting activeFocus by clicking anywhere within an Item通过单击项目中的任意位置设置 activeFocus
【发布时间】: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 位于另一个控件下方,它就不会再注册单击。

标签: qt focus qml qt-quick


【解决方案1】:

FocusScope包围你的Item

FocusScope {
   Item {
       focus: true
   }
}

Qt Doc

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2012-03-15
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多