QT 5.7 QML 如何控制哪个控件在 TabView 中获得焦点

QT 5.7 QML How to control which Control gets the focus within a TabView

我想安排一个特定的控件来获得 TabView Tab 内的焦点。似乎无论我做什么,第一个都会得到关注。我试过在其他地方设置 focus:false 但它不起作用。

考虑以下代码。我有一个包含两个 RadioButton 和一个 TextField 的简单列。我想安排 TextField 在选择选项卡时始终获得焦点,但它总是转到第一个 RadioButton

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3

ApplicationWindow
{
    visible: true
    width: 800
    height: 400

    TabView
    {
        anchors.fill: parent

        Tab { title: "tab1"; sourceComponent: foo }
        Tab { title: "tab2"; sourceComponent: foo }
    }

    Component
    {
        id: foo
        ColumnLayout
        {
            spacing: 32
            ExclusiveGroup { id: optionGroup }

            RadioButton
            {
                // i always get the focus!!
                exclusiveGroup: optionGroup
                text: "Click me"
                activeFocusOnPress: true
                focus: false
            }

            RadioButton
            {
                exclusiveGroup: optionGroup
                text: "No, click me!"
                activeFocusOnPress: true
                focus: false
            }

            TextField
            {
                // but i want the focus
                placeholderText: "type here"
                focus: true
            }
        }
    }
}

按"tab2"看到这个,

我尝试在 TabView 内强制添加,

onCurrentIndexChanged: getTab(currentIndex).item.forceActiveFocus()

不过没关系。

我已经阅读了焦点的解释,但在这种情况下没有帮助。

感谢您的任何建议或帮助,

可能是一个错误。请尝试 Qt Quick Controls 2.0

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

ApplicationWindow {
    visible: true
    width: 800
    height: 400

    header: TabBar {
        id: bar
        width: parent.width
        TabButton {
            text: qsTr("tab1")
        }
        TabButton {
            text: qsTr("tab2")
        }
    }

    StackLayout {
        anchors.fill: parent
        currentIndex: bar.currentIndex

        ColumnLayout {
            id: columnLayout
            spacing: 32

            ButtonGroup {
                id: optionGroup
                buttons: columnLayout.children
            }

            RadioButton {
                text: "Click me"
            }

            RadioButton {
                text: "No, click me!"
            }

            TextField {
                placeholderText: "type here"
                focus: true
            }
        }
    }
}