Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符相关的知识,希望对你有一定的参考价值。
来自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
}
}
}
以上是关于Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符的主要内容,如果未能解决你的问题,请参考以下文章
Qt Quick Controls 2 上 SpinBox 的后缀选项
Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符