Название: [РЕШЕНО] Сигнал QObject::destroyed(QObject*) Отправлено: 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* ) ) ); В этом случае не будет ошибки доступа к памяти? Название: Re: Сигнал QObject::destroyed(QObject*) Отправлено: Old от Декабрь 31, 2014, 17:39 Сигнал эмитется из деструктора QObject, т.е. деструкторы классов наследников уже отработали, поэтому использовать методы из разрушенных объектов не стоит. Ничем хорошим это не кончиться. :)
Название: Re: Сигнал QObject::destroyed(QObject*) Отправлено: lit-uriy от Декабрь 31, 2014, 18:21 >>Что имеется ввиду под can not be blocked.?
Его нельзя заблокировать (обычно сигналы могут блокироваться с помощью bool QObject::blockSignals ( bool block ) ) Название: Re: Сигнал QObject::destroyed(QObject*) Отправлено: Yegor от Январь 01, 2015, 11:29 Спасибо!
|