我有主应用程序窗口的以下QML布局。我需要为无边框窗口创建阴影,这就是为什么内部矩形比应用程序边框小一点(我之前在StackOverflow上找到了这个解决方案)。问题是当一个新项目被推送到嵌套的StackView时,它会从内部矩形的外部移动。我该如何解决?
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.2
import QtGraphicalEffects 1.0
import org.b2soft.qml 1.0
ApplicationWindow {
id: window
visible: true
width: 800
height: 600
title: qsTr("Test")
color: "#00000000"
flags: Qt.FramelessWindowHint | Qt.Window
Rectangle {
id: rect
width: 700
height: 500
anchors.centerIn: parent
Column {
id: column
anchors.fill: parent
Row {
id: topbar
anchors.left: parent.left
anchors.right: parent.right
height: 24
Rectangle {
anchors.top: parent.top
anchors.bottom: parent.bottom
width: parent.width
color: "#37373a"
}
}
StackView {
id: rootStackView
anchors.left: parent.left
anchors.right: parent.right
height: parent.height - topbar.height
initialItem: Qt.resolvedUrl("login.qml")
}
Connections {
target: QMLWrapper
onLoginCompleted: rootStackView.push(Qt.resolvedUrl("main_stack.qml"))
}
}
}
DropShadow {
anchors.fill: rect
radius: 40
samples: 32
verticalOffset: 14
source: rect
color: "#40000000"
}
}
答案 0 :(得分:1)
我会继续下去并假设这是默认的预期行为。默认情况下,QML元素不会剪辑,出于担心它可能是一个繁重的操作。
堆栈视图通常包含在应用程序窗口中,因此这个问题不会很突出。
但是你的嵌套在一个较小的元素中,为工件留出了空间。
您只需为clip: true
设置rect
。