0

暗号化された添付ファイルでメール クライアントから呼び出される復号化ソフトウェアの 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

これは後方にあり、スプラッシュスクリーンは閉じません。

4

1 に答える 1