我有一个用于从邮件客户端对加密附件调用的解密软件的 UI。
我的解密对象在成功完成解密时发出一个信号:
emit decryptedChanged();
我通过我的控制器对象(作为 _encryptedattachmentencryptedattachment 附加到 QML UI:
connect(m_decryptor, SIGNAL(decryptedChanged()), this, SIGNAL(decryptedChanged()));
我有一张在加密文件上调用时显示的工作表:初始化 UI 时:
onCreationCompleted: {
splashscreen.open();
}
(在我的 TabbedPane 的末尾,在 Sheet 所在的 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
这是向后的,并且启动画面不会关闭。