J'ai une interface utilisateur pour certains logiciels de décryptage qui est invoqué à partir du client de messagerie sur une pièce jointe cryptée.Fermer Feuille avec le signal de C++ dans Blackberry Cascades
Mon objet de décryptage émet un signal à la réussite du décryptage:
emit decryptedChanged();
que je passe à travers mon objet contrôleur (joint en _encryptedattachmentencryptedattachment à l'interface utilisateur QML:
connect(m_decryptor, SIGNAL(decryptedChanged()), this, SIGNAL(decryptedChanged()));
J'ai Feuille affichée à l'appel sur un fichier chiffré: lorsque l'interface utilisateur est initialisée:
onCreationCompleted: {
splashscreen.open();
}
(à la fin de mon TabbedPane, avant que les attachedObjects où la feuille est.)
Je suis en train d'obtenir la feuille de fermer en fonction du signal.
Sheet {
id: splashscreen
peekEnabled: false
Page {
Container {
layout: DockLayout {
}
ImageView {
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
imageSource: "asset:///images/background.png"
}
Label {
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Center
text: "Decrypting..."
multiline: true
}
}
}
onCreationCompleted: {
_encryptedattachment.decryptedChanged.connect(splashscreen.onDecryptedChanged());
}
function onDecryptedChanged() {
splashscreen.close();
}
}
L'écran de démarrage ne se ferme pas. Je sais que l'objet peut être vu par l'interface utilisateur, car j'utilise d'autres propriétés etc. Ai-je manqué une QPROPERTY ou quelque chose?
Mise à jour:
Ceci est ma définition de signal:
Q_INVOKABLE void decryptedChanged();
Mise à jour à nouveau:
J'ai ajouté quelques console.logs au QML:
onCreationCompleted: {
_encryptedattachment.decryptedChanged.connect(splashscreen.onDecryptedChanged());
console.log("connected");
}
function onDecryptedChanged() {
console.log("closing");
splashscreen.close();
}
Cela me donne le ouptut suivant:
closing
connected
qui est en arrière, et l'écran splash ne se ferme pas.
Il ne semble pas que le code que vous avez lié est responsable de ce qui ne fonctionne pas. Êtes-vous certain que votre signal est émis? – Deadron
Oui, j'ai ajouté une impression de débogage juste avant l'émission, et elle a été imprimée. Cela pourrait-il avoir quelque chose à voir avec l'ordre dans lequel les choses se passent? –