为什么忽略 Qml Popup 模态?

Why Qml Popup modality is ignored?

尽管 modality 设置为 trueclosePolicy 设置为 NoAutoClose,但我对 Popup(默认 qml class)不是模态有一个问题。

当我通过单击标准 qml 按钮打开弹出窗口时出现问题。打开Popup后,执行了一个冗长的操作,然后Popup关闭。

当操作为 运行 时,整个应用程序和 Popup 本身都会对鼠标点击做出反应。但它不会关闭弹出窗口。相反,它以某种方式单击按钮,再次打开 Popup。这不应该发生,因为我的 Popup 是模态的。

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 2.4

ApplicationWindow {
    id: main_window

    visible: true
    width: 800
    height: 500

    Item {
        anchors.fill: parent

        Popup {
            id: blockingPopup

            width: 300
            height: 50
            modal: true
            focus: true
            closePolicy: Popup.NoAutoClose
        }

        Button {
            text: "Btn"
            onClicked: {
                console.log("clicked")
                blockingPopup.open();
                cppModel.lengthyOperation()
                blockingPopup.close();
            }
        }
    }
}

再次总结一下:当我点击模态Popup外部(甚至内部)显示时按钮以某种方式被点击并且操作是运行。

Qt 5.12.0,Linux薄荷 19.2

问题出在我的 cpp 模型函数中的 QCoreApplication::processEvents() 中。它导致对模态弹出窗口的点击被注册为对按钮的点击。