gpt4 book ai didi

qt - qml 无框窗口的阴影

转载 作者:行者123 更新时间:2023-12-04 00:41:02 25 4
gpt4 key购买 nike

我有无框主窗口,由 qml 创建( ApplicationWindow {..} 在我的 main.qml 文件中)我通过 QQmlApplicationEngine::load(Qt5.1 中引入的类)实例化 qml。如果我设置 Qt.FramelessWindowHint 标志,窗口是无框的,但会丢失阴影(在 Windows 中)。如何为我的窗口添加阴影?

我的橱窗 list :

ApplicationWindow {
id: rootWindow
color : "#f8f8f8"
maximumHeight: 445
minimumHeight: 445
minimumWidth: 730
maximumWidth: 730
flags : Qt.FramelessWindowHint | Qt.Window

Component.onCompleted: {
setHeight(455)
setWidth(740)
}

MainObject{
id:mainObject1
anchors.fill: parent
height:445
width:730
}


}

最佳答案

解决方案是将阴影部分集成到应用程序中,这样您可以禁用 WM 装饰而仍然有装饰,并且在不同平台上保持一致。

在下面的示例中,窗口有一个阴影,甚至可以动画以创建在移动窗口时将其抬起的效果。当窗口最大化时,边距被移除,因此阴影不再可见。

import QtQuick 2.7
import QtQuick.Controls 2.1
import QtGraphicalEffects 1.0
import QtQuick.Window 2.3

ApplicationWindow {
id: main
visible: true
width: 300
height: 200
color: "#00000000"
flags: Qt.FramelessWindowHint | Qt.Window

Rectangle {
id: rect
anchors.fill: parent
anchors.margins: main.visibility === Window.FullScreen ? 0 : 10
MouseArea {
id: ma
anchors.fill: parent
property int dx
property int dy
onPressed: { dx = mouseX; dy = mouseY }
onPositionChanged: {
main.x += mouseX - dx
main.y += mouseY - dy
}
onDoubleClicked: main.visibility = main.visibility === Window.FullScreen ? Window.AutomaticVisibility : Window.FullScreen
}
}

DropShadow {
anchors.fill: rect
horizontalOffset: 1
verticalOffset: 1
radius: ma.pressed ? 8 : 5
samples: 10
source: rect
color: "black"
Behavior on radius { PropertyAnimation { duration: 100 } }
}
}

enter image description here

关于qt - qml 无框窗口的阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18754057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com