TextArea
有一个名为tabChangesFocus
的属性,可以将其设置为在两个可能的操作之间切换Tab键的行为:
true
:在TextArea
false
:将焦点移至标签链 Quick Controls 2.x(https://doc.qt.io/qt-5/qml-qtquick-controls2-textarea.html)中的TextArea
似乎不存在此属性。
默认为true
行为,但我希望false
行为(焦点更改)。
有没有人知道为Quick Control 2实现相同效果的简单方法?
答案 0 :(得分:3)
将来可能会更方便,但您可以使用QML KeyNavigation设置标签导航:
import QtQuick 2.9
import QtQuick.Controls 2.2
ApplicationWindow {
id: window
width: 300
height: 300
visible: true
Column {
spacing: 20
TextArea {
id: textArea1
focus: true
text: "TextArea1"
KeyNavigation.tab: textArea2
KeyNavigation.backtab: textArea2
KeyNavigation.priority: KeyNavigation.BeforeItem
}
TextArea {
id: textArea2
text: "TextArea2"
KeyNavigation.tab: textArea1
KeyNavigation.backtab: textArea1
KeyNavigation.priority: KeyNavigation.BeforeItem
}
}
}
答案 1 :(得分:2)
另一种方法是使用Item::nextItemInFocusChain()
。这样,您不需要知道焦点链中的下一个项目:
import QtQuick 2.9
import QtQuick.Controls 2.2
ApplicationWindow {
id: window
width: 300
height: 300
visible: true
Column {
spacing: 20
TextArea {
id: textArea1
focus: true
text: "TextArea1"
Keys.onTabPressed: nextItemInFocusChain().forceActiveFocus(Qt.TabFocusReason)
}
TextArea {
id: textArea2
text: "TextArea2"
objectName: text
Keys.onTabPressed: nextItemInFocusChain().forceActiveFocus(Qt.TabFocusReason)
}
}
}