从ListView qml中我选择了一个项目并打开了弹出对话框(qml)。
初始焦点不会到来,所以我强迫使用焦点 listview.currentItem.forceActiveFocus()//在popup qml中
但关闭对话框后焦点不会重新恢复到ListView qml选定项目。
onButtonAction: {
switch (action) {
case ButtonActions.PRESSED:
container.ListView.view.currentIndex = index;
itemloader.item.forceActiveFocus();
break;
}
}
这是我用来重新点击按钮的片段。
在对话框获得焦点并关闭对话框后,光标(焦点)停留在弹出图层上,而不是返回基础层。
Component.onCompleted:{ console.log(" ___________ Alert onCompleted(),焦点:" +焦点 +" activeFocus:" + activeFocus) accept_button.forceActiveFocus(); 返回; }
输出即将到来
焦点:true,ActiveFocus:false
所以总是主动焦点变弱,所以accept_button.forceActiveFocus()仅适用于鼠标交互onButtonAction()
我的完整代码
FocusScope
{
signal buttonAction(int index, int action)
property int itemWidth: 200
property int itemHeight: 70
id: disclaimer_view
anchors.fill: parent
focus: true
ButtonText
{
id: accept_button
objectName: "accept_button"
//: Accept button to close disclaimer
//# REQ HMI_10
text: qsTranslate("", "Accept")+ Retranslate.whenLocaleOrLangChanges
type: "regular"
fontSize: 36
fontBold: true
width: disclaimer_view.itemWidth
height: disclaimer_view.itemHeight
onButtonAction: disclaimer_view.buttonAction(0, action)
anchors.bottom: warning_background.bottom
anchors.bottomMargin: 10
anchors.horizontalCenter: parent.horizontalCenter
}
Component.onCompleted: {
console.log("___________Harley Disclaimer onCompleted(), focus: " + focus
+ " activeFocus: " + activeFocus)
accept_button.forceActiveFocus();
return;
}
}
答案 0 :(得分:0)
我有一个类似的问题,解决方法是用popup.close()
代替任何其他方法来关闭弹出窗口。