Qt快速无边框窗口未重新绘制

Qt快速无边框窗口未重新绘制,qt,popup,qml,redraw,Qt,Popup,Qml,Redraw,我尝试创建一个简单的应用程序,用户需要在其中输入日期。为此,我想连接一个带有日历弹出窗口的按钮。只要弹出窗口是它自己的窗口并且有边框,这就可以正常工作。但当我让窗户无边界的那一刻,它似乎不再被画了。实际上,如果移动参考底图窗口,您会看到带有日历小部件的区域保持未绘制状态 import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.1 import QtQuick.Window 2.1 ApplicationWi

我尝试创建一个简单的应用程序,用户需要在其中输入日期。为此,我想连接一个带有日历弹出窗口的按钮。只要弹出窗口是它自己的窗口并且有边框,这就可以正常工作。但当我让窗户无边界的那一刻,它似乎不再被画了。实际上,如果移动参考底图窗口,您会看到带有日历小部件的区域保持未绘制状态

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1
import QtQuick.Window 2.1

ApplicationWindow {
    width: 800
    height: 600
    property var pos : getOffset(dateField)

    Button {
        id: dateField
        width: 100
        height: 50
        anchors.centerIn: parent
        text: "show widget"
        onClicked:{ toggleModal() }
    }

    function getOffset(item) {
        var offset = {
            "x": item.x,
            "y": item.y + item.height
        };
        while(item.parent) {
            item = item.parent;
            offset.x += item.x;
            offset.y += item.y;
        }
        console.debug("total", "x", offset.x, "y", offset.y)

        return offset;
    }

    function toggleModal() {
        if(modal.active) {
            console.log("hide calendar")
            loseFocus();
        }
        else {
            console.log("show calendar")
            modal.show()
            modal.requestActivate()
        }
    }

    function loseFocus(newDate) {
        modal.close();
    }

    Window {
        id: modal
        flags: Qt.Window | Qt.FramelessWindowHint
        //flags: Qt.Window
        //modality: Qt.ApplicationModal
        minimumHeight: calendar.height; minimumWidth: calendar.width
        maximumHeight: calendar.height; maximumWidth: calendar.width
        x: pos.x
        y: pos.y

        Calendar {
            id: calendar
            width: 200
            height: 300
        }
    }
}