来自Qt Quick Controls 1.x(TextArea
)的QML http://doc.qt.io/qt-5/qml-qtquick-controls-textarea.html有一个名为tabChangesFocus
的属性,可以设置为在两个可能的动作之间切换Tab键的行为:
true
:在TextArea
中输入Tab字符false
:将焦点移动到选项卡链中的下一个项目在Quick Controls 2.x(TextArea
)中,https://doc.qt.io/qt-5/qml-qtquick-controls2-textarea.html似乎不存在此属性。
默认是true
行为,但我想要false
行为(焦点更改)。
有没有人知道一种简单的方法来实现快速控制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)
}
}
}
这可能会在将来更方便,但您可以使用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
}
}
}