Как я создаю графический интерфейс пользователя в C++? [закрытый]

250
задан Community 5 July 2019 в 02:02
поделиться

7 ответов

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

Каждая операционная система поставляется со своим собственным набором инструментов графического интерфейса, набором заголовочных файлов и вызовов API, а также их собственный способ работы. Существуют также кросс-платформенные наборы инструментов, такие как GTK , Qt и wxWidgets , которые помогут вам создавать программы, которые работают где угодно. Они достигают этого, имея одинаковые вызовы API на каждой платформе, но другая реализация для тех функций API, которые вызывают собственные вызовы API ОС.

У них всех будет одна общая черта, которая будет отличаться от программы CLI, - это то, что называется циклом событий. Основная идея здесь несколько сложна, и ее трудно сжать, но по сути это означает, что в вашем основном классе / основной функции не так много всего, за исключением:

  • проверьте очередь событий, есть ли какие-либо новые события
  • если есть, отправьте эти события соответствующим обработчикам
  • , когда закончите, верните управление операционной системе (обычно с помощью какого-то специального вызова функции «сна», «выбора» или «выхода»)
  • , то функция yield вернется, когда операционная система завершит работу, и у вас будет еще один обход цикла.

Существует множество ресурсов о программировании на основе событий. Если у вас есть какой-либо опыт работы с JavaScript, это та же основная идея, за исключением того, что вы, скриптер, не имеете доступа или контроля над самим циклом событий или тем, какие события существуют, ваша единственная задача - написать и зарегистрировать обработчики.

Следует иметь в виду, что программирование графического интерфейса в целом невероятно сложно и сложно. Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + руководства, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

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

Следует иметь в виду, что программирование графического интерфейса в целом невероятно сложно и сложно. Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + руководства, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

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

Следует иметь в виду, что программирование графического интерфейса пользователя в целом невероятно сложно и сложно. Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + руководства, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

у сценариста нет доступа или контроля над самим циклом событий или с тем, какие события существуют, ваша единственная задача - написать и зарегистрировать обработчики.

Вы должны иметь в виду, что программирование GUI невероятно сложно и сложно в целом. Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + учебники, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

у сценариста нет доступа или контроля над самим циклом событий или с тем, какие события существуют, ваша единственная задача - написать и зарегистрировать обработчики.

Вы должны иметь в виду, что программирование GUI невероятно сложно и сложно в целом. Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + руководства, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + учебники, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

Если у вас есть возможность, на самом деле намного проще просто интегрировать встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / веб. Единственное исключение, с которым я столкнулся, - это Apple Cocoa + Xcode + построитель интерфейса + руководства, которые делают его наиболее доступной средой для людей, плохо знакомых с программированием графического интерфейса.

144
ответ дан 23 November 2019 в 02:56
поделиться

Независимый от ОС алгоритм " Создание приложений с графическим интерфейсом на C ++ в три этапа ":

  1. Установить Qt Creator

    enter image description here

  2. Создать новый проект (Приложение Qt Widgets)

    enter image description here

  3. Создайте его.

Поздравляю, у вас есть первый графический интерфейс на C ++.

Теперь вы готовы прочитать много документации , чтобы создать что-то более сложное, чем «Hello world» "Приложение с графическим интерфейсом.

73
ответ дан 23 November 2019 в 02:56
поделиться

Существует множество бесплатных переносимых библиотек GUI , каждая из которых имеет свои сильные и слабые стороны:

Особенно Qt имеет хорошие учебные пособия и инструменты, которые помогут вам начать работу. Наслаждайтесь!

Обратите внимание, однако, что вам следует избегать специфичных для платформы функций, таких как Win32 API или MFC. Это без надобности привязывает вас к определенной платформе практически без каких-либо преимуществ.

158
ответ дан 23 November 2019 в 02:56
поделиться

Учитывая комментарий или «скажем, Windows XP в качестве примера», то у вас есть следующие варианты:

  • Взаимодействовать напрямую с операционной системой через ее API, что для Microsoft Windows является неожиданным вызовом Windows API . Полная ссылка на WinAPI - это Microsoft веб-сайт MSDN . Популярным онлайн-руководством для начинающих является theForger's Win32 API Programming Tutorial . Классической книгой для этого является Чарльз Петцольд Программирование Windows, 5-е издание .

  • Используйте платформу (как с точки зрения ОС, так и с точки зрения компилятора), такую ​​как MFC , который превращает WinAPI в класс C ++. Ссылка на это снова MSDN. Классической книгой для этого является Джефф Просайз Программирование Windows с помощью MFC, 2-е издание . Если вы используете, скажем, CodeGear C ++ Builder, то здесь можно выбрать VCL .

  • Используйте кроссплатформенную библиотеку, например GTK + (оболочка C ++: gtkmm ), Qt , wxWidgets или FLTK , которые обертывают API конкретной ОС. Их преимущества заключаются в том, что, как правило, ваша программа может быть скомпилирована для другой ОС без изменения исходных кодов. Как уже было сказано, у каждого из них есть свои сильные и слабые стороны. Одно из соображений при выборе того, что использовать, - это его лицензия. Для приведенных примеров GTK + & gtkmm имеет лицензию LGPL, Qt находится под различными лицензиями, включая проприетарный вариант, wxWidgets находится под собственной лицензией wxWindows (с переименованием в лицензию wxWidgets), а FLTK - под LGPL, за исключением. Для получения справки, учебников или книг обратитесь к каждому веб-сайту для получения подробной информации.

23
ответ дан 23 November 2019 в 02:56
поделиться

Поскольку я уже был там, где вы сейчас, думаю, я могу "ответить" вам.

Дело в том, что нет простого способа создать графический интерфейс. Графический интерфейс пользователя сильно зависит от конкретной платформы и кода ОС, поэтому вам следует начать читать документацию по целевой платформе / ОС по API управления окнами. Хорошо то, что существует множество библиотек, которые устраняют эти ограничения и различия в абстрактной архитектуре в едином многоплатформенном API. Те, что предлагались ранее, GTK и Qt, являются одними из этих библиотек.

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

Подводя итог, можно сказать, что существуют также несвободные «среды» для разработки графического интерфейса пользователя, такие как Visual Studio от Microsoft. Для тех, кто имеет опыт работы с Delphi , Visual Studio может быть более знакомой. Существуют также бесплатные альтернативы полной среде Visual Studio, поставляемой Microsoft: Visual Studio Express , чего более чем достаточно для начала разработки графического интерфейса.

18
ответ дан 23 November 2019 в 02:56
поделиться

Я нашел веб-сайт с "простым" учебником: http://www.winprog.org/tutorial/start.html

14
ответ дан 23 November 2019 в 02:56
поделиться

Создать графический интерфейс .NET для Windows на C ++ просто.

См. Следующий учебный курс из MSDN . Вы можете загрузить все необходимое (Visual C ++ Express) бесплатно .

Конечно, вы привязываете себя к .NET, но если вы просто играете или нуждаетесь только в приложении Windows, вы будете хорошо (у большинства людей все еще есть Windows ... пока).

3
ответ дан 23 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: