Qt. Способы подключения Ui (уместность применения)

Модератор: Модераторы разделов

vipermagi
Сообщения: 83
ОС: AgiliaLinux

Qt. Способы подключения Ui

Сообщение vipermagi »

Как известно из документации кутей, есть три с половиной способа подключить к проекту сгенерённый конструктором форм файлик.

Первый способ: тупо добавить в мэйн заголовочник формы, там же создать объект, там же сделать setupUi.

Второй способ А: унаследовать пользовательский класс от виджета как у формы, подключить в его заголовочник заголовочник формы и создать там член класса формы, после чего в конструкторе запустить setupUi.

Второй способ Б: унаследовать пользовательский класс от виджета как у формы, в пользовательском заголовочнике сделать предварительное объявление класса формы и создать не него указатель; а заголовочник формы подключить в пользовательскую реализацию ну и опять таки сделать там же setupUi.

Третий способ: отнаследовать пользовательский класс от виджета как у формы и от самого класса формы дабы стало не нужным создавать член класса и можно было бы вызывать виджеты формы напрямую.

В кутях по умолчанию используется Второй способ Б из-за его киллер-фичи по экономии времени при перекомпилировании.


В связи со всем этим появляется вопрос о существовании случаев, в которых разработчик поменял бы умолчальный способ подключения на один из остальных.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Qt. Способы подключения Ui

Сообщение NickLion »

А смысла менять особого нет.

1-й способ — почти бесполезен для рабочего приложения. Либо просто посмотреть как оно должно выглядеть, либо если контролы хорошо работают без обработчиков (сигналы слоты связали и работает). Обычно демки UI/контролов, не более.

2А — "не нужен" ©. В редких случаях, как сказано в доке — создание табов из отдельных форм. Тут можно применить и 2А, особых потерь на компиляции не будет: ещё выше будет 2Б.

3-й способ раньше (Qt3) был основным, некоторые его могут использовать по привычке (плюс некоторым не нравится писать ui-> для доступа к контролам). Но чаще им могут пользоваться, если интерфейс писать кодом, а не в дизайнере. В Qt это достаточно просто делается и есть любители.

Теоретически, 2А и 3 дают чуть более быстрый доступ к контролам — на одну косвенную адресацию меньше. Но по факту этого прироста не заметно — вызовы setText и т.п. обычно не критичное место.
Спасибо сказали: