如何在QtGraphicalEffects中使用QtQuick.Controls 2.xx

时间:2019-06-05 17:19:32

标签: qt qml qtquickcontrols2

我对QtQuick控件2和图形效果有一点问题:对包含控件(例如简单的Button)的项目使用图形效果后,控件将停止正确显示。例如,使用按钮时,仅显示文本,背景不再可见。它仅在Material样式下发生。

请参见以下示例:

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

Pane {
    id: root

    width: 300
    height: 150

    Pane {
        id: content
        visible: false
        width: 200
        height: 50

        Button {
            anchors.fill: parent
            text: "I'm a Button too..."
        }
    }

    DropShadow {
        anchors.fill: content
        source: content
        radius: 10
        samples: 21
    }

    Button {
        anchors.top: content.bottom
        anchors.topMargin: 10
        text: "Button"
    }
}

如果使用Material样式(qmlscene --style Material test.qml,其中test.qml包含前面的示例)通过qmlscene运行此操作,则会发生以下情况:

enter image description here

第二个按钮按原样显示,但第一个按钮仅显示文本...删除DropShadow后,第一个按钮再次显示正常。

以前有人遇到过此问题吗?这是一个已知的错误,还是我在做我不应该做的事情?有什么解决方法吗?

1 个答案:

答案 0 :(得分:0)

您已将按钮声明为具有属性flat: true flat 。因此,您的按钮没有背景。

第二个问题是您在Pane元素而不是按钮上设置了阴影。因此,您将得到这样的提示:

enter image description here

您可以通过添加属性padding: 0使按钮填充整个窗格。或者,您也可以删除Pane并将阴影应用于Button