Russian Qt Forum
Ноябрь 24, 2024, 17:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Сигнал QObject::destroyed(QObject*)  (Прочитано 3844 раз)
Yegor
Гость
« : Декабрь 31, 2014, 17:00 »

Здравствуйте, уважаемые форумчане!

Работаю в Qt 4.8.6.
Помогите мне, пожалуйста, разобраться с темой.

Сигнал объекта QObject непосредственно перед своим уничтожением посылает сигнал destroyed (QObject *).
В документации об этом сигнале пишется:
Цитировать
This signal is emitted immediately before the object obj is destroyed, and can not be blocked.

Что имеется ввиду под can not be blocked.?

И главное, что меня интересует. Если к этому сигналу подсоединить слот, в который будет передаваться тот указатель (QObject*) в качестве аргумента, то можно ли в слоте входить по указателю в объект и работать с его методами? Он до этого времени еще не уничтожиться?

То есть если сделать:
Код:
connect ( MyObject, SIGNAL ( destroyed ( QObject* ) ), this, SLOT ( onMyObjDeleted_slot ( QObject* ) ) );

...........................

...........................

MyDialog::onMyObjDeleted_slot ( QObject *pMyObj )
{
    pMyObj->method1();
    pMyObj->method2();
}

В этом случае не будет ошибки доступа к памяти?
« Последнее редактирование: Январь 01, 2015, 11:30 от Yegor » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Декабрь 31, 2014, 17:39 »

Сигнал эмитется из деструктора QObject, т.е. деструкторы классов наследников уже отработали, поэтому использовать методы из разрушенных объектов не стоит. Ничем хорошим это не кончиться. Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Декабрь 31, 2014, 18:21 »

>>Что имеется ввиду под can not be blocked.?
Его нельзя заблокировать (обычно сигналы могут блокироваться с помощью bool QObject::blockSignals ( bool block ) )
Записан

Юра.
Yegor
Гость
« Ответ #3 : Январь 01, 2015, 11:29 »

Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.