Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt StackView项被推到边框之外_Qt_Qml - Fatal编程技术网

Qt StackView项被推到边框之外

Qt StackView项被推到边框之外,qt,qml,Qt,Qml,我有以下主应用程序窗口的QML布局。我需要为无边框窗口创建阴影,这就是为什么内部矩形比应用程序边框小一点的原因(我以前在StackOverflow上找到了这个解决方案)。问题是,当一个新项目被推送到嵌套的StackView时,它会从内部矩形的外侧移动。我该怎么修 import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.2 import QtGraphicalEffects 1.0 import org.b

我有以下主应用程序窗口的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"
    }  
}
以下是有关问题的GIF:

我会孤注一掷,并假设这是默认的预期行为。QML元素在默认情况下不会剪裁,因为它可能是一个繁重的操作

堆栈视图通常包含在应用程序窗口中,因此这个问题不会突出

但是您的元素嵌套在一个较小的元素中,为工件的显化留出了空间


你所要做的就是为
rect

设置
clip:true
,我假设这是默认的预期行为。QML元素在默认情况下不会剪裁,因为它可能是一个繁重的操作

堆栈视图通常包含在应用程序窗口中,因此这个问题不会突出

但是您的元素嵌套在一个较小的元素中,为工件的显化留出了空间


当我将
clip:true
放置在
rect
中时,您所要做的就是为
rect

设置
clip:true
,但我将剪辑添加到
rootStackView
中,现在一切正常。谢谢。当我在
rect
中放置
clip:true
时,它不起作用,但是我在
rootStackView
中添加了剪辑,现在一切都好了。谢谢