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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Qt Creator - вопрос по выбору способа встраивания ui  (Прочитано 17773 раз)
SABROG
Гость
« Ответ #15 : Февраль 26, 2010, 15:13 »

Указатель ui при этом играет ту же роль, что и q_ptr.
Записан
b-s-a
Гость
« Ответ #16 : Февраль 26, 2010, 17:00 »

По сути первый способ это та же техника, которая используется внутри Qt.
... она называется PIMPL (Pointer to IMPLementation)
Записан
sarbash
Гость
« Ответ #17 : Февраль 27, 2010, 00:08 »

После неторопливого размышления и взвешивания всех за и против выбор пал в пользу агрегации через указатель.
Записан
SABROG
Гость
« Ответ #18 : Февраль 27, 2010, 01:16 »

По сути первый способ это та же техника, которая используется внутри Qt.
... она называется PIMPL (Pointer to IMPLementation)

Похоже, но тут структура сложнее. Если брать конкретно QWidget, то у него есть QWidgetPrivate класс. При этом в файлах реализации: qwidget_win.cpp, qwidget_x11.cpp переопределение идет методов как QWidget, так и QWidgetPrivate.
То есть тут двойной pimpl, при этом и файл QWidget и QWidgetPrivate не являются абстрактными интерфейсами, в них тоже до кучи своих методов, которые уже не зависят от нативных реализаций. А так они бы могли QWidgetPrivate вообще убрать за ненадобностью и в файле qwidget_win.cpp просто сделать реализацию методов QWidget класса. Ну или все методы которые они переопределили для QWidget переместить в QWidgetPrivate, который полностью перенести в тот же qwidget_win.cpp. Только в этом случае им бы пришлось делать кучу лишней работы, так внутреннюю реализацию пришлось бы исправлять для всех ОС одновременно. В общем приват классы что-то типа машинного цеха с общим двигателем для любой платформы. Если основная цель pimpl предоставить одинаковую работу под разными платформами или условиями, то приватные классы такой цели себе не ставят, разве что на уровне отдельно взятых методов, а не всего класса целиком.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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