From 469c975a708ed86c834b59ed751a4548c693a7b9 Mon Sep 17 00:00:00 2001 From: 李威 wei.li <108964761+liwey1985@users.noreply.github.com> Date: 周一, 21 4月 2025 15:34:54 +0800 Subject: [PATCH] Fix NSWindowProxy::setSystemButtonVisible not taking effect (#175) --- examples/qml/main.qml | 133 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 130 insertions(+), 3 deletions(-) diff --git a/examples/qml/main.qml b/examples/qml/main.qml index b266921..dd4f284 100644 --- a/examples/qml/main.qml +++ b/examples/qml/main.qml @@ -1,17 +1,28 @@ import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 +import Qt.labs.platform 1.1 import QWindowKit 1.0 Window { id: window width: 800 height: 600 - color: "#1E1E1E" + color: darkStyle.windowBackgroundColor title: qsTr("Hello, world!") Component.onCompleted: { windowAgent.setup(window) + windowAgent.setWindowAttribute("dark-mode", true) window.visible = true + } + + QtObject { + id: lightStyle + } + + QtObject { + id: darkStyle + readonly property color windowBackgroundColor: "#1E1E1E" } Timer { @@ -25,16 +36,21 @@ id: windowAgent } + TapHandler { + acceptedButtons: Qt.RightButton + onTapped: contextMenu.open() + } + Rectangle { id: titleBar anchors { top: parent.top - topMargin: 1 left: parent.left right: parent.right } height: 32 - color: window.active ? "#3C3C3C" : "#505050" + //color: window.active ? "#3C3C3C" : "#505050" + color: "transparent" Component.onCompleted: windowAgent.setTitleBar(titleBar) Image { @@ -48,6 +64,8 @@ height: 18 mipmap: true source: "qrc:///app/example.png" + fillMode: Image.PreserveAspectFit + Component.onCompleted: windowAgent.setSystemButton(WindowAgent.WindowIcon, iconButton) } Text { @@ -124,5 +142,114 @@ bold: true } color: "#FEFEFE" + Component.onCompleted: { + if ($curveRenderingAvailable) { + console.log("Curve rendering for text is available.") + timeLabel.renderType = Text.CurveRendering + } + } + } + + Menu { + id: contextMenu + + Menu { + id: themeMenu + title: qsTr("Theme") + + MenuItemGroup { + id: themeMenuGroup + items: themeMenu.items + } + + MenuItem { + text: qsTr("Light") + checkable: true + onTriggered: windowAgent.setWindowAttribute("dark-mode", false) + } + + MenuItem { + text: qsTr("Dark") + checkable: true + checked: true + onTriggered: windowAgent.setWindowAttribute("dark-mode", true) + } + } + + Menu { + id: specialEffectMenu + title: qsTr("Special effect") + + MenuItemGroup { + id: specialEffectMenuGroup + items: specialEffectMenu.items + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("None") + checkable: true + checked: true + onTriggered: { + window.color = darkStyle.windowBackgroundColor + windowAgent.setWindowAttribute("dwm-blur", false) + windowAgent.setWindowAttribute("acrylic-material", false) + windowAgent.setWindowAttribute("mica", false) + windowAgent.setWindowAttribute("mica-alt", false) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("DWM blur") + checkable: true + onTriggered: { + window.color = "transparent" + windowAgent.setWindowAttribute("acrylic-material", false) + windowAgent.setWindowAttribute("mica", false) + windowAgent.setWindowAttribute("mica-alt", false) + windowAgent.setWindowAttribute("dwm-blur", true) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Acrylic material") + checkable: true + onTriggered: { + window.color = "transparent" + windowAgent.setWindowAttribute("dwm-blur", false) + windowAgent.setWindowAttribute("mica", false) + windowAgent.setWindowAttribute("mica-alt", false) + windowAgent.setWindowAttribute("acrylic-material", true) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Mica") + checkable: true + onTriggered: { + window.color = "transparent" + windowAgent.setWindowAttribute("dwm-blur", false) + windowAgent.setWindowAttribute("acrylic-material", false) + windowAgent.setWindowAttribute("mica-alt", false) + windowAgent.setWindowAttribute("mica", true) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Mica Alt") + checkable: true + onTriggered: { + window.color = "transparent" + windowAgent.setWindowAttribute("dwm-blur", false) + windowAgent.setWindowAttribute("acrylic-material", false) + windowAgent.setWindowAttribute("mica", false) + windowAgent.setWindowAttribute("mica-alt", true) + } + } + } } } \ No newline at end of file -- Gitblit v1.9.1