如何在窗格中使用 Material.elevation 和 Radius?

Sam*_*nte 2 qt qml material-design

我正在尝试使用我添加的窗格,Material.elevation: 6但反过来我想给它一个圆角,我不能同时将两者放在一起

尝试了以下操作,但海拔高度丢失。

Pane {
   // ...
    Material.elevation: 6

    background: Rectangle {
        radius: 15
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这个想法是您可以同时保留这两个方面以实现以下目标:

eyl*_*esc 11

您必须根据源代码进行覆盖:

圆形面板.qml

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12
import QtQuick.Controls.Material.impl 2.12

Pane {
    id: control
    property int radius: 2
    background: Rectangle {
        color: control.Material.backgroundColor
        radius: control.Material.elevation > 0 ? control.radius : 0

        layer.enabled: control.enabled && control.Material.elevation > 0
        layer.effect: ElevationEffect {
            elevation: control.Material.elevation
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

图标面板.qml

import QtQuick 2.12
import QtQuick.Controls.Material 2.12
import QtQuick.Layouts 1.12

RoundPane {
    id: control
    property alias name: txt.text
    property alias icon: image.source
    Material.elevation: 6
    radius: 15
    RowLayout{
        anchors.fill: parent
        Image {
            id: image
            sourceSize.height: parent.height
        }
        Text {
            id: txt;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

主文件

import QtQuick 2.9
import QtQuick.Window 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    IconPane{
        name: "Stack <b>Overflow</b>"
        icon: "https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg"
        anchors.centerIn: parent
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明