Как сделать панель видимой сверху в приложении qt quick? - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу показать панель сообщений для отображения моих сообщений пользователям, быть видимой поверх всех других окон и страниц?

MessageBar.qml

Pane {
id: bar
z: 9999999999999999

property alias message:me
Message{
    id: me
    onContentChanged: {
    }
}
Material.background: message.backColor
height: 48

Label{
    color: "white"
    text: message.content
    anchors.fill: parent
    horizontalAlignment: Label.AlignHCenter
}
property bool visibleState: message.visible&&message.messageType== Message.SimpleMessage
scale: visibleState?1.0:0.0
Behavior on scale {
    NumberAnimation {
        duration: 100
    }
}

}

main.qml

ApplicationWindow { 
    MessageBar{
    id: messageBar
    anchors.centerIn: parent
    Layout.fillWidth: true
    }    
}

но на других страницах будет видно, как решить эту проблему?

1 Ответ

0 голосов
/ 22 ноября 2018

Самый простой способ - использовать Popup.Они отображаются над всеми остальными элементами сцены по умолчанию.Кроме того, вы можете установить значение z для всплывающего окна, чтобы оно было выше всех других всплывающих окон.

Если вы по какой-либо причине не хотите использовать всплывающее окно, вы можете использовать родительэлемент на оверлей :

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.3

ApplicationWindow {
    width: 640
    height: 480
    visible: true

    Button {
        text: "Button"
    }

    Pane {
        width: 200
        height: 200
        parent: Overlay.overlay
        Material.background: Material.Grey

        Label {
            text: "Above"
            anchors.centerIn: parent
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...