Как известно из документации кутей, есть три с половиной способа подключить к проекту сгенерённый конструктором форм файлик.
Первый способ: тупо добавить в мэйн заголовочник формы, там же создать объект, там же сделать setupUi.
Второй способ А: унаследовать пользовательский класс от виджета как у формы, подключить в его заголовочник заголовочник формы и создать там член класса формы, после чего в конструкторе запустить setupUi.
Второй способ Б: унаследовать пользовательский класс от виджета как у формы, в пользовательском заголовочнике сделать предварительное объявление класса формы и создать не него указатель; а заголовочник формы подключить в пользовательскую реализацию ну и опять таки сделать там же setupUi.
Третий способ: отнаследовать пользовательский класс от виджета как у формы и от самого класса формы дабы стало не нужным создавать член класса и можно было бы вызывать виджеты формы напрямую.
В кутях по умолчанию используется Второй способ Б из-за его киллер-фичи по экономии времени при перекомпилировании.
В связи со всем этим появляется вопрос о существовании случаев, в которых разработчик поменял бы умолчальный способ подключения на один из остальных.
Qt. Способы подключения Ui (уместность применения)
Модератор: Модераторы разделов
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Qt. Способы подключения Ui
А смысла менять особого нет.
1-й способ — почти бесполезен для рабочего приложения. Либо просто посмотреть как оно должно выглядеть, либо если контролы хорошо работают без обработчиков (сигналы слоты связали и работает). Обычно демки UI/контролов, не более.
2А — "не нужен" ©. В редких случаях, как сказано в доке — создание табов из отдельных форм. Тут можно применить и 2А, особых потерь на компиляции не будет: ещё выше будет 2Б.
3-й способ раньше (Qt3) был основным, некоторые его могут использовать по привычке (плюс некоторым не нравится писать ui-> для доступа к контролам). Но чаще им могут пользоваться, если интерфейс писать кодом, а не в дизайнере. В Qt это достаточно просто делается и есть любители.
Теоретически, 2А и 3 дают чуть более быстрый доступ к контролам — на одну косвенную адресацию меньше. Но по факту этого прироста не заметно — вызовы setText и т.п. обычно не критичное место.
1-й способ — почти бесполезен для рабочего приложения. Либо просто посмотреть как оно должно выглядеть, либо если контролы хорошо работают без обработчиков (сигналы слоты связали и работает). Обычно демки UI/контролов, не более.
2А — "не нужен" ©. В редких случаях, как сказано в доке — создание табов из отдельных форм. Тут можно применить и 2А, особых потерь на компиляции не будет: ещё выше будет 2Б.
3-й способ раньше (Qt3) был основным, некоторые его могут использовать по привычке (плюс некоторым не нравится писать ui-> для доступа к контролам). Но чаще им могут пользоваться, если интерфейс писать кодом, а не в дизайнере. В Qt это достаточно просто делается и есть любители.
Теоретически, 2А и 3 дают чуть более быстрый доступ к контролам — на одну косвенную адресацию меньше. Но по факту этого прироста не заметно — вызовы setText и т.п. обычно не критичное место.
Спасибо сказали: