QtQuick.Controls 2.12不在按钮上显示焦点
我正在使用QtQuick.Controls 2.12,我正在尝试显示带有3个按钮的窗口,其中一个按钮将具有焦点。使用QtQuick.Controls 1.4一切正常,按钮1有焦点(蓝色边框): 但是使用QtQuick.Controls 2.12的结果如下: 如果我按Tab键,焦点将传递到按钮2、按钮3、按钮1 我也尝试过力量集中,但没有结果 这是main.qmlQtQuick.Controls 2.12不在按钮上显示焦点,qt,qml,qtquickcontrols2,Qt,Qml,Qtquickcontrols2,我正在使用QtQuick.Controls 2.12,我正在尝试显示带有3个按钮的窗口,其中一个按钮将具有焦点。使用QtQuick.Controls 1.4一切正常,按钮1有焦点(蓝色边框): 但是使用QtQuick.Controls 2.12的结果如下: 如果我按Tab键,焦点将传递到按钮2、按钮3、按钮1 我也尝试过力量集中,但没有结果 这是main.qml import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.La
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.12
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
RowLayout{
anchors.fill: parent
Button{
id: button1
text: "Button1"
focus: true
}
Button{
text: "Button2"
onClicked: {
button1.forceActiveFocus()
}
}
Button{
text: "Button3"
}
}
}
当窗口启动时,我尝试获取以下信息:
允许突出显示的属性是,如果审阅了文档: 此属性保存控件是否具有可视焦点这个 当控件具有活动焦点和焦点时,属性为true 原因为Qt.TabFocusReason、Qt.BacktabFocusReason或 Qt.ShortcutFocusReason. 通常,对于可视化关键焦点,此属性优于 项目::activeFocus。这确保了关键焦点仅在 与按键交互-不是通过触摸或鼠标进行交互 另请参见focusReason和Item::activeFocus (强调矿山) 因此,您必须使用但传递指定的原因之一,因为如果您不传递参数,则正如文档所指出的,原因是Qt::OtherFocusReason: 这是一个重载函数 强制将活动焦点集中在具有给定原因的项目上 此方法将焦点设置在项目上,并确保 对象层次中的FocusScope对象也具有焦点 Qt5.1中介绍了这种方法 另请参见activeFocus和Qt::FocusReason
强制对项目进行主动聚焦 此方法将焦点设置在项目上,并确保 对象层次中的FocusScope对象也具有焦点 焦点更改的原因将是Qt::OtherFocusReason。使用 重载方法来指定焦点原因,以便更好地 焦点变化的处理 另请参见activeFocus (强调矿山) 因此,解决方案是:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
RowLayout{
anchors.fill: parent
Button{
id: button1
text: "Button1"
}
Button{
text: "Button2"
}
Button{
text: "Button3"
}
}
Component.onCompleted: button1.forceActiveFocus(Qt.TabFocusReason)
}
窗口{
可见:正确
宽度:640
身高:480
标题:qsTr(“你好世界”)
行布局{
锚定。填充:父级
钮扣{
id:按钮1
文本:“按钮1”
}
钮扣{
文本:“按钮2”
}
钮扣{
文本:“按钮3”
}
}
Component.onCompleted:button1.forceActiveFocus(Qt.TabFocusReason)
}
允许突出显示的属性是,如果审阅了文档:
此属性保存控件是否具有可视焦点这个
当控件具有活动焦点和焦点时,属性为true
原因为Qt.TabFocusReason、Qt.BacktabFocusReason或
Qt.ShortcutFocusReason.
通常,对于可视化关键焦点,此属性优于
项目::activeFocus。这确保了关键焦点仅在
与按键交互-不是通过触摸或鼠标进行交互
另请参见focusReason和Item::activeFocus
(强调矿山)
因此,您必须使用但传递指定的原因之一,因为如果您不传递参数,则正如文档所指出的,原因是Qt::OtherFocusReason:
这是一个重载函数
强制将活动焦点集中在具有给定原因的项目上
此方法将焦点设置在项目上,并确保
对象层次中的FocusScope对象也具有焦点
Qt5.1中介绍了这种方法
另请参见activeFocus和Qt::FocusReason
强制对项目进行主动聚焦 此方法将焦点设置在项目上,并确保 对象层次中的FocusScope对象也具有焦点 焦点更改的原因将是Qt::OtherFocusReason。使用 重载方法来指定焦点原因,以便更好地 焦点变化的处理 另请参见activeFocus (强调矿山) 因此,解决方案是:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
RowLayout{
anchors.fill: parent
Button{
id: button1
text: "Button1"
}
Button{
text: "Button2"
}
Button{
text: "Button3"
}
}
Component.onCompleted: button1.forceActiveFocus(Qt.TabFocusReason)
}
窗口{
可见:正确
宽度:640
身高:480
标题:qsTr(“你好世界”)
行布局{
锚定。填充:父级
钮扣{
id:按钮1
文本:“按钮1”
}
钮扣{
文本:“按钮2”
}
钮扣{
文本:“按钮3”
}
}
Component.onCompleted:button1.forceActiveFocus(Qt.TabFocusReason)
}