Как мне создать свой графический интерфейс в Qt?

Мне интересно, какой способ лучше всего начать создавать GUI + SOFT в Qt. Я пытаюсь создать звуковой медиаплеер на основе шаблона MVC. До сих пор я нашел 3 способа сделать это.

1- Должен ли я использовать файл .ui благодаря конструктору Qt, достаточно ли он гибкий?

2- Должен ли я использовать QML для создания дизайна, чем интегрировать его в разработку на C++?

3- Должен ли я просто начать с нуля и сделать это вручную без Qt Designer и с использованием библиотеки Qt?

Большое спасибо за ваши ответы.


person clenemt    schedule 05.01.2011    source источник


Ответы (4)


Я предпочитаю создавать пользовательский интерфейс полностью с нуля. Это дает большую гибкость и лучшее понимание того, что где находится, но, с другой стороны, изменение макета иногда является большой головной болью.

person Andrejs Cainikovs    schedule 05.01.2011
comment
Я использую QtDesigner на C++ (входит в состав QtCreator). Кто-нибудь из вас использовал QML? - person clenemt; 05.01.2011
comment
Javascript для настольных приложений? Никогда. Я использую QtDesigner для скелета проекта, а затем перемещаю все в Eclipse. Я пробовал также так называемую интеграцию Qt Eclipse, но нашел ее несколько неудобной, поэтому использовал простой C++ с скомпилированными библиотеками Qt mingw. Это мой личный рабочий процесс, я думаю, что многие люди улыбнутся этому, я просто к этому привык. - person Andrejs Cainikovs; 05.01.2011
comment
@AndrejsCainikovs Тогда вы запускаете qmake вручную? (потому что я пришел к той же настройке, но запуск qmake без создания пакетного файла (вызов qmake) в дереве проекта и установка соответствующего поведения затмения в файлах проекта двойным щелчком кажется невозможной) - person mlvljr; 03.07.2012
comment
@mlvljr, вы можете создать/преобразовать свой проект Eclipse в Makefile и добавить шаг qmake в этот Makefile. Вот пример make-файла, но без выполнения qmake: stackoverflow.com/a/7823366/147407 - person Andrejs Cainikovs; 03.07.2012
comment
@AndrejsCainikovs Спасибо, я посмотрю. - person mlvljr; 03.07.2012

ПРИМЕЧАНИЕ. Я использую PyQt, поэтому мой комментарий может быть не самым актуальным.

Я обнаружил, что Qt Designer отлично подходит для создания пользовательских интерфейсов, но затем, когда приходит время изменить их позже, это становится проблемой. Вставка новых элементов в существующий макет часто бывает сложной задачей, и вам придется разбивать все ваши макеты и собирать их заново (надеясь, что вы ничего не напутали). Более того, если ваше приложение не является тривиальным, вы, скорее всего, получите код, «исправляющий» то, что .ui не может сделать. Есть и другие подобные каверзные случаи, но я их сейчас не вспомню.

В итоге я избавился от своих файлов .ui. Поэтому я бы рекомендовал сначала использовать конструктор для создания пользовательского интерфейса, а затем использовать только сгенерированный код с этого момента.

person Virgil Dupras    schedule 05.01.2011
comment
Я думаю, что этот метод отлично подходит для новичков в Qt. Используйте конструктор, чтобы ознакомиться с доступными компонентами и их свойствами, но пишите свой код с библиотекой по причинам, упомянутым Вирджилом. Для меня быстрее просто написать код, чем создавать UI-файл и ссылаться на него в коде. Примечание. Я использую C++ Qt. - person GatorGuy; 06.01.2011

Если вы хотите, чтобы ваш пользовательский интерфейс был анимированным, и не требуется следить за внешним видом пользовательского интерфейса платформы, QML, безусловно, лучший способ добиться этого. Если вам нужен пользовательский интерфейс, который выглядит как любое другое приложение в вашей системе и имеет ограниченную анимацию, тогда придерживайтесь QtDesigner и стандартных виджетов.

person MartinJ    schedule 07.01.2011

Я бы использовал Qt Designer, так как это самый простой метод ИМХО.

person trojanfoe    schedule 05.01.2011
comment
Является ли Qt Designer для C++ полным, т.е. включает в себя большинство/все виджеты и макеты? У меня возникли проблемы с запуском версии PyQt Designer, в которой отсутствуют большинство классов и некоторые макеты, поэтому я не мог продолжать создавать свой графический интерфейс с помощью Designer и переключился на ручное кодирование (с положительной стороны, теперь у меня больше опыта программирования GUI и код пользовательского интерфейса намного короче и чище). - person ; 05.01.2011
comment
Да, полный, насколько я понимаю. Я думаю, это очевидный выбор. - person trojanfoe; 05.01.2011
comment
Qt Designer очень полный, и все, что вы не можете сделать в нем, вы можете расширить в ручном коде C++. Посмотрите демонстрации и руководства по Qt, все они упоминают 2 (или 3, я забыл) способа расширения класса .ui вручную. - person rubenvb; 05.01.2011
comment
Но пользовался ли кто-нибудь из вас QML и есть ли у него какие-то мнения по этому поводу? Спасибо :д - person clenemt; 05.01.2011