Я правильно понимаю, что есть два способа создания связей слотов и сигналов: через ui, и через код, т.е. connect()?
Как правильнее делать? Ведь если я делаю это через ui, в коде это же не отображается.
Или я неправильно понимаю?
Игорь Джулай, Александр, это очень плохой совет, редактор ui использовать можно и нужно, а верстать руками интерфейсы в плюсах — моветон.
Это усложняет поддержку, код интерфейса смешивается с логикой. Вот в QML — там да, надо верстать руками, под это специальный декларативный язык написали, и с логикой на С++ он не смешивается.
а) Новичкам такое сделать сложно, они 146% всё скидают в кучу.
б) Я не понимаю, в чем проблема, когда в moc_*.cpp автоматически, читай бесплатно генерируется "лишний код", который в вам в ином случае придётся писать руками, и тогда "лишнее" уже будет непосредственно в файлах проекта.
Признайтесь, вам просто было лень потратить несколько часов, и визуальный редактор интерфейсов вы так и не освоили, потому пишете всё руками.
Яков Е, a) согласен
б) сложный интерфейс одними ui файлами сделать не получится, и в итоге будет каша с ui и С++ кодом. Поэтому жизнь это упрощает только проэктам с одним диалогом.
Признаться в таком не могу, это будет ложь. Работу с Qt начал исключительно с ui на Qt 4.1. Работал с дизайнером где-то 4 года. Работаю с Qt до сих пор.
Яков Е, вот вам пример мусорного/лишнего кода дизайнера о котором я говорю. Если добавить виджет на окно, потом подкрутить его шрифт и задать ему параметр bold true. А потом передумать и вернуть значения по умолчанию через дизайнер. Ожидается получить тот код, который был до изменения параметров.
Но в итоге остаются лишние инициализации:
б) Смотря что считать сложным интерфейсом, например вот это я реализовал с помощью визуального редактора и таблиц стилей, в коде была только пара виджетов, типа календаря и таблицы с drag-n-drop. Там есть возможность вкладывать одну форму в другую, так что если говорить о стандартных элементах, то сложность интерфейса и размер проекта не ограничены.
Даже если предположить, что в каждом лейбле происходит такая избыточная инициализация, то всё, чем это грозит — увеличение времени запуска приложения на несколько миллисекунд, никто и не заметит разницы.
Я не вижу смысла отказываться от использования дизайнера, тратить кучу времени и сил ради призрачной оптимизации времени запуска.