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
}
}
}
}
我想安排一个特定的控件来获得 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
}
}
}
}