Как изменить размер наложения QML ApplicationWindow? - PullRequest
0 голосов
/ 05 апреля 2020

Так как Qt 5.10 возможно установить Overlay присоединенное свойство для элемента Popup. Вот пример, доступный здесь https://doc.qt.io/qt-5/qml-qtquick-controls2-overlay.html#modal -attached-prop . Это действительно полезно в тех случаях, когда необходимо изменить фон для Popup, если для свойства dim: установлено значение true. Но нет никакой подсказки (по крайней мере для меня) о том, как я могу изменить Overlay размер. Например, у меня есть пользовательское свойство ApplicationWindow overriding contents:, позволяющее рисовать тень над окном (у моего пользовательского окна нет границ) и помещать MouseArea за границы, чтобы имитировать c поведение нативного windows. Грустная часть - Overlay нарисована по всей области окна, что делает ее уродливой для области за границами.

Кто-нибудь знает способ регулировки размера наложения (я имею в виду, по крайней мере, фоновую тень) при использовании dim: свойство в Popup?

Вот типичный 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
    }

Здесь вы можете увидеть, как это выглядит в моем приложении:

enter image description here

Наложенный фон пересекает мои пользовательские границы, что означает, что он занимает всю область ApplicationWindow. И это то, что я пытаюсь изменить. До сих пор я не нашел никакого документированного пути.

1 Ответ

1 голос
/ 05 апреля 2020

Я предлагаю вам использовать 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 , чтобы понять, где это может быть проблемой элемента Content против фона. Возможно, ваше затемнение было сделано на фоне, который больше, чем содержание. https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html

...