До сих пор все мои программы на C ++ использовали интерфейс командной строки, и единственный другой язык, с которым у меня есть опыт, - это PHP, который не поддерживает GUI.
С чего начать с графического программирования пользовательского интерфейса на C ++? Как мне его создать?
c++
user-interface
waiwai933
источник
источник
Ответы:
По сути, система управления окнами операционной системы предоставляет некоторые вызовы API, которые можно выполнять для выполнения таких задач, как создание окна или нажатие кнопки в окне. По сути, вы получаете набор заголовочных файлов и можете вызывать функции в этих импортированных библиотеках, так же, как вы делаете это с stdlib и
printf
.Каждая операционная система поставляется с собственным инструментарием графического интерфейса пользователя, набором файлов заголовков и вызовами API, а также собственным способом работы. Существуют также кроссплатформенные наборы инструментов, такие как GTK , Qt и wxWidgets, которые помогают создавать программы, которые работают где угодно. Они достигают этого, имея одинаковые вызовы API на каждой платформе, но различную реализацию для тех функций API, которые обращаются к вызовам API собственной ОС.
Одна вещь, которая у них всех будет общая, которая будет отличаться от программы CLI, это то, что называется циклом обработки событий. Основная идея здесь несколько сложна и трудна для сжатия, но по сути это означает, что в вашем основном классе / основной функции нет ничего особенного, кроме:
Есть много ресурсов о программировании на основе событий. Если у вас есть какой-либо опыт работы с JavaScript, это та же самая основная идея, за исключением того, что вы, сценарист, не имеете доступа или контроля над самим циклом событий или какими бы то ни было событиями, ваша единственная задача - писать и регистрировать обработчики.
Вы должны иметь в виду, что программирование GUI невероятно сложно и вообще сложно. Если у вас есть возможность, на самом деле гораздо проще просто встроить встроенный веб-сервер в вашу программу и иметь интерфейс на основе HTML / web. Единственное исключение, с которым я столкнулся, - это учебники Apple по созданию интерфейса Cocoa + Xcode +, которые делают его легко доступной средой для людей, плохо знакомых с программированием GUI, которые я видел.
источник
Существует множество бесплатных переносимых графических библиотек , каждая из которых имеет свои сильные и слабые стороны:
Особенно в Qt есть хорошие учебники и инструменты, которые помогут вам начать работу. Наслаждайтесь!
Однако обратите внимание, что вам следует избегать специфических для платформы функций, таких как Win32 API или MFC. Это связывает вас без нужды на конкретной платформе практически без каких-либо преимуществ.
источник
Независимый от ОС алгоритм « Создание приложений с графическим интерфейсом в C ++ в три этапа »:
Установите Qt Creator
Создать новый проект (Приложение Qt Widgets)
Построить это.
Поздравляем, у вас есть ваш первый графический интерфейс на C ++.
Теперь вы готовы прочитать много документации, чтобы создать нечто более сложное, чем приложение «Hello world».
источник
Учитывая комментарий «скажем, Windows XP в качестве примера», тогда ваши варианты:
Взаимодействуйте напрямую с операционной системой через ее API, который для Microsoft Windows является неожиданным сюрпризом для Windows API . Окончательной ссылкой на WinAPI является веб-сайт Microsoft MSDN . Популярным онлайновым учебником для начинающих для этого является учебник по программированию Win32 API для Forger . Классическая книга для этого - « Программирование 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 License), а FLTK - под LGPL, за исключением. Для справки, учебника и / или книг, обратитесь к веб-сайту каждого для деталей.
источник
Поскольку я уже был там, где вы сейчас находитесь, я думаю, что могу «ответить» вам.
Дело в том, что нет простого способа сделать графический интерфейс. Графический интерфейс сильно зависит от кода платформы и ОС, поэтому вы должны начать читать документацию по вашей целевой платформе / ОС по API управления окнами. Хорошая вещь: есть много библиотек, которые устраняют эти ограничения и абстрактные архитектурные различия в едином многоплатформенном API. Предложенные ранее GTK и Qt являются некоторыми из этих библиотек.
Но даже это немного слишком сложно, так как много новых понятий, типов данных, пространств имен и классов введены, все сразу. По этой причине они используются в комплекте с некоторым графическим редактором WYSIWYG. Они в значительной степени делают возможным программирование с графическим интерфейсом.
Подводя итог, можно сказать, что существуют также несвободные «среды» для разработки GUI, такие как Visual Studio от Microsoft. Для тех, кто имеет опыт работы с Delphi , Visual Studio может быть более знакомым. Существуют также бесплатные альтернативы полной среде Visual Studio, поставляемые Microsoft: Visual Studio Express , которых более чем достаточно для начала разработки графического интерфейса.
источник
Я нашел сайт с «простым» учебником: http://www.winprog.org/tutorial/start.html
источник
Легко создать .NET Windows GUI на C ++.
Смотрите следующий учебник от MSDN . Вы можете скачать все, что вам нужно (Visual C ++ Express) бесплатно .
Конечно, вы привязываете себя к .NET, но если вы просто играете или нуждаетесь только в приложении Windows, у вас все будет хорошо (у большинства людей Windows все еще есть ... пока).
источник
Я использую FLTK, потому что Qt не является бесплатным. Я не выбираю wxWidgets , потому что мой первый тест с простым Hello, World! Программа выдала исполняемый файл размером 24 МБ, FLTK 0,8 МБ ...
источник