我想安排一个特定的控件,让焦点集中在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()
但它没有任何区别。
我已经阅读了焦点的解释,但在这种情况下没有帮助。
感谢您的任何建议或帮助,
答案 0 :(得分:0)
可能是一个错误。请改为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
}
}
}
}