Каков предпочтительный метод для создания приложения wxWidget: с помощью инструмента с графическим интерфейсом или процедурно в коде? - PullRequest
0 голосов
/ 17 апреля 2009

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

Ответы [ 4 ]

6 голосов
/ 17 апреля 2009

Я использовал wxFormBuilder по двум причинам:

  1. Он кроссплатформенный, и мне нужно что-то, что будет работать в Linux.
  2. Я новичок в wxWidgets, и я не хотел тратить много времени на изучение GUI.

Я думаю, что это работает довольно хорошо, и, будучи знакомым с подобными инструментами построения GUI (Borland C ++ Builder, Jigloo for Java, Delphi), я нашел его простым в использовании.

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

Преимущества:

  • Может генерировать базовые графические интерфейсы довольно быстро, визуально, без необходимости постоянно просматривать документацию.
  • Не нужно делать столько циклов кода / компиляции / запуска, просто чтобы убедиться, что ваш GUI выглядит так, как вы ожидали.
  • Парадигма базового класса / производного класса может достаточно разумно разделить ваш графический интерфейс и код бизнес-логики.

Потенциальные недостатки

  • Отказ от ответственности: Я использовал wxWidgets только для создания очень простых и понятных графических интерфейсов, поэтому на самом деле не ограничивал инструмент какими-либо ограничениями.
  • Потенциально парадигма базового класса / производного класса может иногда мешать вам, если вы делаете что-то слишком сложное с вашим GUI (OTOH, которое может указывать на то, что вам, возможно, придется пересмотреть свой подход.)
  • У меня была ситуация, когда мне нужен был пункт меню при компиляции для одной операционной системы, но не при компиляции для другой. В wxFormBuilder нет логики для поддержки этого. Я закончил тем, что выбрал быстрый способ создания пункта меню, а затем мой производный класс сделал его невидимым, если это была неправильная ОС (не идеальная).

Вот и все, я думаю.

3 голосов
/ 17 апреля 2009

Что я нахожу, так это то, что я часто строю первый вырез в графическом интерфейсе с помощью инструмента, и когда он кажется сходящимся в «окончательной» форме, я начинаю перекодировать / реорганизовывать вручную.

Отчасти это зависит от инструментов, хотя и тоже. Я не большой поклонник wxWidget.

1 голос
/ 17 апреля 2009

Возможно, вы захотите использовать XRC / XRS файлы .

Хотя должен признать, что сам не удосужился сделать это. Просто генерация статического кода GUI с использованием wxFormBuilder (который поддерживает XRC, кстати) была достаточной для всех моих (небольших) конструкций GUI.

1 голос
/ 17 апреля 2009

Вы знаете, это зависит. Например. если мне нужно стандартное поведение, я обычно использую DialogBlocks для GUI, потому что это самый быстрый способ. Если мне нужно пользовательское поведение (например, мой текущий проект - кроссплатформенный медиа-менеджер, GUI которого поддерживает скины), тогда я делаю все связанные с GUI вещи в коде. Что касается пользовательских элементов управления:

  • Если элемент управления выполняет какую-то специфическую для проекта вещь, то я создаю его в DialogBlocks, используя тот же файл проекта (с другими формами и диалогами, используемыми в этом проекте)
  • Если мой элемент управления можно использовать повторно (элемент управления общего назначения), я создаю для него отдельный проект и создаю келетон в DialogBlocks - добавляю пустые обработчики событий и переменные класса, если это возможно, затем пишу логику вручную в Visual Studio. *

Вот и все:)

...