#c #qml #qqmlcomponent
Вопрос:
Я пытаюсь загрузить всплывающие окна на встроенный экран после получения сигнала. Чтобы смоделировать это, я создал свойства, и когда каждое свойство имеет значение 1, для каждого должно отображаться всплывающее окно. Однако, когда у меня есть более одного свойства со значением 1, оно загружает только первое всплывающее окно и останавливается на нем.
Это код на экране, загруженный из всплывающего компонента
Loader{
id: loader
PopUp {state: 'emptystate'}
}
Вот код для PopUp.qml
import QtQuick 2.9
Rectangle {
id: popupContainer
border.color: '#cccccc'
width: 423
height: 82
x: 749
y: 498
color: 'transparent'
border.width: 2
radius: 20
// font loader
FontLoader {id: titleFont; source: "font/orbitron-medium.ttf"}
FontLoader {id: textFont; source: "font/futura-book-bt.ttf"}
// properties
property alias popUpIndicator : pindicator.source
property alias popUpTitle : ptitle.text
property alias popUpMessage : pmessage.text
Image {
id: pindicator
x: 49
y: 8
width: 66
height: 66
verticalAlignment: parent.verticalCenter
}
Rectangle {
id: messages
Text {
id: ptitle
y: 15
color: '#cccccc'
font.family: titleFont.name
font.capitalization: Font.AllUppercase
font.pixelSize: 17
anchors.leftMargin: 125
anchors.left: messages.left
}
Text {
id: pmessage
y: 40
color: '#cccccc'
font.family: textFont.name
font.pixelSize: 18
anchors.leftMargin: 125
anchors.left: messages.left
}
}
SequentialAnimation {
NumberAnimation {target: popupContainer; properties: 'opacity'; from: 0.0; to: 1.0; duration: 3000; easing.type: Easing.Linear}
NumberAnimation {target: popupContainer; properties: 'opacity'; from: 1.0; to: 0.0; duration: 3000; easing.type: Easing.Linear}
running: true
}
// states
states: [
State {
name: 'emptystate'
PropertyChanges{target: popupContainer; border.color : 'transparent'}
},
State {
name: 'tyrepressure'
when: canTyrePressure == 1
PropertyChanges{target: popupContainer; popUpIndicator: "images/tyre.png"; popUpTitle : "Tyre Pressure Warning"; popUpMessage : "Check Tyre Pressure";}
},
State {
name: 'absmalfunction'
when: canABSMalfunction == 1
PropertyChanges{target: popupContainer; popUpIndicator: "images/abs.png"; popUpTitle : "ABS Malfunction"; popUpMessage : "Braking System Failure";}
},
State {
name: 'tpms'
when: canTPMS == 1
PropertyChanges{target: popupContainer; popUpIndicator: "images/tpms.png"; popUpTitle : "TPMS Malfunction"; popUpMessage : "Check TPM";}
},
State {
name: 'servicemode'
when: canServiceMode == 1
PropertyChanges{target: popupContainer; popUpIndicator: "images/servicemode.png"; popUpTitle : "Service Mode Active"; popUpMessage : "Service mode has been activated";}
},
State {
name: 'frontcollision'
when: canFrontCollision == 1
PropertyChanges{target: popupContainer; popUpIndicator: "images/frontcollision.png"; popUpTitle : "Front Collision Warning"; popUpMessage : "Front Collision Imminent: Slow Down";}
}
]
}
Как я могу последовательно загрузить несколько всплывающих компонентов на экран?
Комментарии:
1. Вы должны определить, что происходит, когда одна из проблем устранена, устанавливает ли это свойство значение 0? В этом случае появится следующее всплывающее окно. Это происходит потому, что, в двух словах, только одно состояние может быть активным