暗号化された添付ファイルでメール クライアントから呼び出される復号化ソフトウェアの UI があります。
私の復号化オブジェクトは、復号化が正常に完了するとシグナルを発します:
emit decryptedChanged();
これをコントローラー オブジェクトに渡します (_encryptedattachmentencryptedattachment として QML UI に添付されます:
connect(m_decryptor, SIGNAL(decryptedChanged()), this, SIGNAL(decryptedChanged()));
暗号化されたファイルでの呼び出し時に表示されるシートがあります: UI が初期化されたとき:
onCreationCompleted: {
splashscreen.open();
}
(私の TabbedPane の最後で、シートがある attachObjects の前に。)
信号に基づいてシートを閉じようとしています。
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();
}
}
スプラッシュスクリーンは閉じません。他のプロパティなどを使用しているため、UI でオブジェクトを表示できることはわかっています。QPROPERTY か何かがありませんか?
アップデート:
これは私の信号定義です:
Q_INVOKABLE void decryptedChanged();
再度更新します。
QML にいくつかの console.logs を追加しました。
onCreationCompleted: {
_encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged() );
console.log("connected");
}
function onDecryptedChanged() {
console.log("closing");
splashscreen.close();
}
これにより、次の出力が得られます。
closing
connected
これは後方にあり、スプラッシュスクリーンは閉じません。