0

我有一个用于从邮件客户端对加密附件调用的解密软件的 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

这是向后的,并且启动画面不会关闭。

4

1 回答 1

1

问题出在这一行:

 _encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged() );

onDecryptedChanged 后面的括号表示调用该函数,而不是连接到该函数。

 _encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged );

工作正常。

于 2013-07-13T08:10:29.063 回答