最小化 Qt 5.15 中的 window 问题

Minimizing window issue in Qt 5.15

Window {
    id: mainWindow

    width: 960
    height: 600

    flags:  Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint | Qt.Window

    Rectangle {
        width: 15
        height: 15

        anchors {
            top: parent.top
            left: parent.left
            
            topMargin: 10
            leftMargin: 910
        }

        SvgImage {
            width: 11
            height: 2

            source: "images/Collapse.svg"

            anchors {
                centerIn: parent
            }
        }

        MouseArea {
            id: mouse
    
            anchors {
                fill: parent
            }
            
            onPressed: {
                mainWindow.showMinimized()
            }
        }
     
        Timer {
            repeat: true
            interval: 1000
            running: true

            onTriggered: {
                console.log("mouse.pressed = ", mouse.pressed);
            }
        }
    }
}

我遇到了 Qt.FramelessWindowHint 的问题。使用 showMinimized() 函数后,我恢复了 window,但随后任何点击 window 都会导致再次最小化 window。 mouseArea 永远不会被按下。我尝试将定时器打印 mouse.pressed 值,但它一直都是错误的。 我找到了关于这个问题的几个链接,但除了在恢复 window 时进入全屏外,没有其他解决方案。我的应用程序始终保持相同大小,从不进入全屏。

https://www.qtcentre.org/threads/33298-Qt-FramelessWindowHint-qgraphicsview-qgraphicwidget-showminimized-problem

https://www.qtcentre.org/threads/42641-QML-rendering-problems-after-showMinimized()

QML: rendering problems after showMinimized()

也许你可以给我一个解决方法的提示。顺便说一句,我正在使用 Qt 5.15

事实上,在运行你的代码之后我看不到任何windows 我添加了 visible: true 并删除了 SvgImage.

我就是这样运行:

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    id: mainWindow

    width: 960
    height: 600
    visible: true

    flags:  Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint | Qt.Window


    Rectangle {
        width: 15
        height: 15
        color: "#f50909"

        anchors {
            top: parent.top
            left: parent.left

            topMargin: 10
            leftMargin: 910
        }

        MouseArea {
            id: mouse

            anchors {
                fill: parent
            }

            onPressed: {
                mainWindow.showMinimized()
            }
        }


    }


}

这是我的结果,它工作正常:

MouseArea 中使用 onClicked 而不是 onPressed