Как работает delete и deleteLater в отношении сигналов и слотов в Qt?

Есть объект класса QNetworkReply. Есть слот (в каком-то другом объекте), связанный с его сигналом finished (). Сигналы синхронные (по умолчанию). Есть только один поток.

В какой-то момент я хочу избавиться от обоих объектов. Больше никаких сигналов или чего-либо от них. Я хочу, чтобы они ушли. Ну, подумал, воспользуюсь

delete obj1; delete obj2;

А можно? Спецификации для ~ QObject говорят:

Удаление QObject во время ожидания доставки ожидающих событий может вызвать сбой.

Что такое «ожидающие события»? Может ли это означать, что пока я вызываю свое delete , уже есть некоторые «ожидающие события», которые нужно доставить, и что они могут вызвать сбой, и я не могу действительно проверить, есть ли они?

Итак скажем, я звоню:

obj1->deleteLater(); obj2->deleteLater();

На всякий случай.

Но действительно ли я в безопасности? deleteLater добавляет событие, которое будет обрабатываться в основном цикле, когда туда попадет управление. Могут ли уже существовать некоторые ожидающие события (сигналы) для obj1 или obj2 , ожидающие обработки в основном цикле до того, как deleteLater будет обработано? Это было бы очень прискорбно. Я не хочу писать код, проверяющий статус «несколько удален» и игнорирующий входящий сигнал во всех моих слотах. Также он очень быстро масштабирует картинку на моем телефоне samsung :)

Я знаю, что могу открыть изображение с такой целью:

Intent i = new Intent(Intent.ACTION_VIEW);  
i.setDataAndType(uri, "image/*");
startActivity(i);

Вызывается наиболее подходящая программа просмотра, когда ничего не обнаруживается, возникает ActivityNotFoundException. Так что круто!

Но проблема в том, что мне не разрешено открывать изображение с внешним намерением (в целях безопасности). то есть: у пользователя не должно быть возможности сохранить открытое изображение через пункт меню на своей внешней SD-карте или отправить это изображение в другую службу (электронная почта / твиттер или что-то в этом роде). Поэтому мне нужно написать свой собственный ImageViewer-Class (Activity), который можно вызывать только в моем приложении ... Также он очень быстро масштабирует картинку на моем телефоне samsung :)

Я знаю, что могу открыть изображение с такой целью:

Intent i = new Intent(Intent.ACTION_VIEW);  
i.setDataAndType(uri, "image/*");
startActivity(i);

Вызывается наиболее подходящая программа просмотра, когда ничего не обнаруживается, возникает ActivityNotFoundException. Так что круто!

Но проблема в том, что мне не разрешено открывать изображение с внешним намерением (в целях безопасности). то есть: у пользователя не должно быть возможности сохранить открытое изображение через пункт меню на своей внешней SD-карте или отправить это изображение в другую службу (электронная почта / твиттер или что-то в этом роде). Поэтому мне нужно написать свой собственный ImageViewer-Class (Activity), который можно вызывать только в моем приложении ... когда ничего не найдено, возникает исключение ActivityNotFoundException. Так что круто!

Но проблема в том, что мне не разрешено открывать изображение с внешним намерением (в целях безопасности). то есть: у пользователя не должно быть возможности сохранить открытое изображение через пункт меню на своей внешней SD-карте или отправить это изображение в другую службу (электронная почта / твиттер или что-то в этом роде). Поэтому мне нужно написать свой собственный ImageViewer-Class (Activity), который можно вызывать только в моем приложении ... когда ничего не найдено, возникает исключение ActivityNotFoundException. Так что круто!

Но проблема в том, что мне не разрешено открывать изображение с внешним намерением (в целях безопасности). то есть: у пользователя не должно быть возможности сохранить открытое изображение через пункт меню на своей внешней SD-карте или отправить это изображение в другую службу (электронная почта / твиттер или что-то в этом роде). Поэтому мне нужно написать свой собственный ImageViewer-Class (Activity), который можно вызывать только в моем приложении ... К сожалению, я не очень опытен в преобразовании изображений, поэтому есть ли какой-нибудь проект (или библиотека) с открытым исходным кодом, который охватывает этот вариант использования?

Я уже спросил у Google и нашел этот http://code.google.com/ p / android-pinch / , но он работал не очень хорошо (также у него нет функции прокрутки).

Спасибо за ваши советы :)

15
задан tim.kaufner 3 February 2011 в 15:51
поделиться