qt — закрыть лист с сигналом от C ++ в Blackberry Cascades

У меня есть пользовательский интерфейс для некоторого программного обеспечения для дешифрования, которое вызывается из почтового клиента в зашифрованном приложении.

Мой объект дешифрования выдает сигнал об успешном завершении дешифрования:

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

что назад, а заставка не закрывается.

0

Решение

Проблема в этой строке:

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

круглые скобки после onDecryptedChanged означают, что эта функция вызывается, а не связана с ней.

 _encryptedattachment.decryptedChanged.connect( splashscreen.onDecryptedChanged );

работает отлично.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector