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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Почему нельзя установить у QWidget родителем QObject ?  (Прочитано 3864 раз)
Владислав
Гость
« : Май 24, 2013, 00:15 »

Не подскажете чем такое ограничение вызвано в Qt?

мне кажется нелогичным такая особенность.

QWidget * widget = new QWidget
QObject * object = new QObject;

//widget->setParent( object );// ошибка
object->setParent( widget );// вот так - нет ошибки
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Май 24, 2013, 01:19 »

потому что QWidget - это визуальный объект, и должен иметь родителем другой визуальный объект.
Записан
Странник
Гость
« Ответ #2 : Май 24, 2013, 08:21 »

потому что QWidget - это визуальный объект, и должен иметь родителем другой визуальный объект.
или быть сиротой, если это окно верхнего уровня. все более чем логично.
Записан
Владислав
Гость
« Ответ #3 : Май 24, 2013, 08:35 »

На мой взгляд такая обособленность QWidget в архитектуре Qt - это не логично потому, что QWidget - наследник QObject .

И "визуальность" объекта не даёт объяснения этой особенности - "визуальность" объекта для разработчика ПО ,в смысле воздействия на ПК, тоже что и обращение к любым другим ресурсам ПК.
 
« Последнее редактирование: Май 24, 2013, 08:40 от Владислав » Записан
Bepec
Гость
« Ответ #4 : Май 24, 2013, 09:07 »

Вы знаете про разделение интерфейса и расчётной части?

Если нет- советую почитать. Тогда поймёте, что разделение UI и расчётов это необходимость.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Май 24, 2013, 09:35 »

На мой взгляд такая обособленность QWidget в архитектуре Qt - это не логично потому, что QWidget - наследник QObject .
Помимо этого QWidget является ещё и наследником QPaintDevice.
Записан

Qt 5.11/4.8.7 (X11/Win)
Странник
Гость
« Ответ #6 : Май 24, 2013, 09:37 »

На мой взгляд такая обособленность QWidget в архитектуре Qt - это не логично потому, что QWidget - наследник QObject .

И "визуальность" объекта не даёт объяснения этой особенности - "визуальность" объекта для разработчика ПО ,в смысле воздействия на ПК, тоже что и обращение к любым другим ресурсам ПК.
попробуйте внятно мне объяснить, зачем вам делать QObject родителем QWidget, а потом мы вместе посмеемся.
Записан
Владислав
Гость
« Ответ #7 : Май 24, 2013, 09:49 »

Хотел для автоматического освобождения ресурсов.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Май 24, 2013, 10:03 »

Хотел для автоматического освобождения ресурсов.
Код
C++ (Qt)
connect( object, SIGNAL( destroyed() ), widget, SLOT( deleteLater() ) );
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Май 24, 2013, 11:22 »

Предположим была бы такая иерархия QWidget->QObject-QWidget->,,
Пользователь ресайзит окно, что должно происходить учитывая что звено QObject ничего с UI делать не умеет?
Записан
Владислав
Гость
« Ответ #10 : Май 24, 2013, 11:40 »

Да, наверое в этом ограничении есть свой смысл. Благодарю всех!

За подсказку с поздним удалением - интересное предложение.
« Последнее редактирование: Май 24, 2013, 11:43 от Владислав » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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