【问题标题】:How to change QML ApplicationWindow Overlay size?如何更改 QML ApplicationWindow Overlay 大小?
【发布时间】:2020-04-04 22:07:19
【问题描述】:

由于Qt 5.10,可以为Popup 元素设置Overlay 附加属性。这里有一个示例https://doc.qt.io/qt-5/qml-qtquick-controls2-overlay.html#modal-attached-prop。这对于需要更改 Popup 的背景并将 dim: 属性设置为 true 的情况非常有用。但是(至少对我而言)我不知道如何更改Overlay 的大小。例如,我有一个自定义ApplicationWindow 覆盖contents: 属性,以便能够在窗口上绘制阴影(我的自定义窗口没有边框)并将MouseArea 放置在边框之外以模仿本机窗口的行为。可悲的是 - Overlay 绘制在整个窗口区域上,这使得超出边界的区域变得丑陋。

Popup 中使用dim: 属性时,有谁知道调整叠加大小(至少是指背景阴影)的方法?

这是一个典型的Popup 代码:

Popup {
        id: popupReleaseNotes
        x: Math.round(parent.width/2 - width/2)
        y: Math.round(parent.height/2 - height/2)
        closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
        modal: true
        dim: true
    }

在这里你可以看到它在我的应用中的样子:

叠加背景超出了我的自定义边界,这意味着它占据了所有 ApplicationWindow 区域。这就是我想要改变的。到目前为止,我没有找到任何记录在案的方式。

【问题讨论】:

  • @eyllanesc 我添加了截图和Popup 代码。我不会添加窗口元素代码,因为它与问题无关。我刚刚实现了自定义透明边框以将MouseArea 放在那里。

标签: qt popup qml overlay applicationwindow


【解决方案1】:

我建议你使用 ColorOverlay。

https://doc.qt.io/qt-5/qml-qtgraphicaleffects-coloroverlay.html

无论如何,在我看来你错过了 Overlay.Modal。 阅读文档(),我期待的是:

Popup {
        id: popupReleaseNotes
        x: Math.round(parent.width/2 - width/2)
        y: Math.round(parent.height/2 - height/2)
        closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
        modal: true

        visible: true

        Overlay.modal: Rectangle {
               anchors.fill: parent
               color: "#aacfdbe7"
        }
}

PS 查看 Popup 及其 Layout 以了解可能是内容项与背景的问题。也许您的调光是在比内容更大的背景上完成的。 https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html

【讨论】:

  • 感谢您的建议,但在发布问题之前我已经尝试过了。此Rectangle 不允许更改覆盖区域大小。
  • 关于第二件事(大约background 大小)。对,是真的。我的自定义窗口背景等于窗口大小。我可以对另一个项目的dim 做些什么吗?可悲的是,我不知道如何做到这一点。或者缺乏文档。
  • 连anchors.fill都没有,正如我所补充的那样?您应该能够根据需要更改矩形的大小。无论如何,您可以发布整个页面吗?所以可以很容易地帮助你
  • 不,不是。可悲的是,它仍然占据整个窗口,无法锚定到其他项目。
  • 感谢您的努力。我想我必须将其发布在 Qt 错误报告上并寻求可能的解决方案(或确认此行为)
猜你喜欢
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2019-08-04
  • 1970-01-01
相关资源
最近更新 更多