重点不要从弹出对话框qml返回到其他qml

时间:2017-09-08 06:34:03

标签: qt qml

从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;
    }


}

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,解决方法是用popup.close()代替任何其他方法来关闭弹出窗口。