LINUX.ORG.RU

Qt5. Как объект может узнать об изменении своего родителя

 ,


0

2

Собственно сабж. Существует какой-либо метод, вызывающийся до/после изменения, событие определённого типа, сигнал.. Да хоть что-нибудь, чтобы узнать об изменении родителя.

А ещё почему-то для QWidget есть события об изменении родителя, а для остальных объектов — нет.

★★★★★

Последнее исправление: robus (всего исправлений: 1)

Ответ на: комментарий от fluorite

Что такое «изменение родителя»?

Изменение родителя — это изменение родителя, которое происходит, например, при вызове QObject::setParent(QObject *parent). Подробнее.

Что за «события об изменении родителя» у QWidget?

QEvent::ParentChange. События этого типа высылаются при изменении родителя у виджетов, но для объектов, наследованных от QObject это событие не высылается.

P.S. QObject::setParent не виртуальный.

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

А кто и как меняет родителей? Может стоит туда добавить нотификацию об этом?

BRE ★★
()
Ответ на: комментарий от robus

P.S. QObject::setParent не виртуальный.

Разрабы тонко намекают, чтобы ты не занимался такой дичью.

ox55ff ★★★★★
()

А ещё почему-то для QWidget есть события об изменении родителя, а для остальных объектов — нет.

Может, по причине производительности? Ну, дескать, потомков виджетов в программе не очень много, а обжектов - на порядок больше, и там это будет критично?

Вроде по причине производительности и не сделали вообще все - потомками обжектов, абсолютно все классы (а ведь тогда все бы отлично рулилось из qml).

wolph ★★
()

Да хоть что-нибудь, чтобы узнать об изменении родителя.

Ну, мне, например, мама подсказала перед второй свадьбой.

anonymous
()
Ответ на: комментарий от fluorite

Спасибо, но это событие оповещает родителя о том, какие child объекты были добавлены / удалены. Мне нужно немного не это. Нужно оповещать child о том, что parent изменился (ставить event filter на абсолютно все QObjet-ы не вариант ни разу).

robus ★★★★★
() автор топика
Ответ на: комментарий от wolph

Может, по причине производительности?

Т.е. оповещение parent-а на производительность не влияет, а вот оповещение child-ов влияет сильно очень.

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

Может переделать архитектуру так, чтобы это не было нужно? Я даже не представляю, где это может вообще пригодиться, может примеры есть?

a1batross ★★★★★
()

почему-то для QWidget есть события об изменении родителя, а для остальных объектов — нет

Потому что у виджета смена родителя может оказывать неиллюзорное влияние на отрисовку

annulen ★★★★★
()

Не жести. Явно пропиши в нужном родителе список потомков которым может быть важно состояние родителя и зови нужный их метод на изменении.

Joe_Bishop
()
Последнее исправление: Joe_Bishop (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.