Платформа C ++ для отделения дизайна пользовательского интерфейса от бизнес-логики - PullRequest
1 голос
/ 10 сентября 2010

Существует ли фреймворк c ++ для создания многофункциональных настольных приложений?

По сути, важная функция, которую я ищу, похожа на Flex4 MXML для разделения визуальной презентации и логики приложения на xml. Позволяет ли, например, Qt4 визуальное отображение в определении xml? Это основано на состоянии, поэтому для событий пользовательский интерфейс изменяется и имеет новый визуальный контент, такой как this и this

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Да.

Используя инструмент Qt's Designer, вы можете разделить дизайн пользовательского интерфейса на XML, а затем компилятор пользовательского интерфейса (инструмент uic) скомпилирует его в класс пользовательского интерфейса.

Ваш код использует этот класс (либо путем делегирования, либо по наследству) для отображения собственного графического интерфейса.
И добавьте механизм слотов сигналов Qt для обработки событий, и у вас есть небесная среда разработки для приложений C ++ GUI:)

Edit:

Хотя в Qt есть инструмент для определения UI в XML, у вас не всегда есть для этого. Вы можете создавать пользовательские интерфейсы программно, но зачем кому-то это делать, верно? В тот день, когда я научился использовать Qt Designer, я перестал создавать программные интерфейсы программным способом.

И я лично чувствую, что парадигма Qt отделения пользовательского интерфейса от кода обработки событий (в отличие от дизайнера пользовательского интерфейса netbeans) является aaawwweeesssooommmeee.

0 голосов
/ 10 сентября 2010

Qt делает. XML компилируется в код во время сборки, поэтому пользовательский интерфейс остается статическим (т. Е. Для его изменения необходимо перекомпилироваться).

Просто FWIW, с помощью wxWidgets и XRC вы можете указать динамический пользовательский интерфейс в XML - т.е. файл XML остается отдельным от приложения, а изменение файла XML приводит к соответствующим изменениям в пользовательском интерфейсе (в определенных конечно).

...