У меня есть пользовательский интерфейс для некоторого программного обеспечения для дешифрования, которое вызывается из почтового клиента в зашифрованном приложении.
Мой объект дешифрования выдает сигнал об успешном завершении дешифрования:
emit decryptedChanged();
который я передаю через мой объект контроллера (прикрепленный как _encryptedattachmentencryptedattachment к QML UI:
connect(m_decryptor, SIGNAL(decryptedChanged()), this, SIGNAL(decryptedChanged()));
У меня есть лист, который отображается при вызове в зашифрованном файле: когда пользовательский интерфейс инициализируется:
onCreationCompleted: {
splashscreen.open();
}
(в конце моего TabbedPane, перед присоединенным объектом, где находится лист.)
Я пытаюсь заставить Лист закрыться на основе сигнала.
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();
}
}
Заставка не закроется. Я знаю, что объект может быть виден через пользовательский интерфейс, так как я использую другие свойства и т. Д. Я пропускаю QPROPERTY или что-то еще?
Обновить:
Это мое определение сигнала:
Q_INVOKABLE void decryptedChanged();
Обновите снова:
Я добавил некоторые console.logs в QML:
onCreationCompleted: {
_encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged() );
console.log("connected");
}
function onDecryptedChanged() {
console.log("closing");
splashscreen.close();
}
Это дает мне следующий выход:
closing
connected
что назад, а заставка не закрывается.
Проблема в этой строке:
_encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged() );
круглые скобки после onDecryptedChanged означают, что эта функция вызывается, а не связана с ней.
_encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged );
работает отлично.
Других решений пока нет …