как мне построить графический интерфейс пользователя в c ++?

<p>до сих пор все мои программы на c++ использовали интерфейс командной строки, и единственный другой язык, с которым у меня есть опыт, это php, который не поддерживает это.</p><p>с чего начать с программирования графического интерфейса пользователя на c++? как мне его создать?</p>

<p>есть много <b>бесплатные портативные библиотеки gui</b>каждый со своими сильными и слабыми сторонами:</p><ul> <li> <a href="https://www.qt.io/">qt</a> </li> <li> <a href="http://www.gtkmm.org/">gtkmm</a> (на основе <a href="http://www.gtk.org/">gtk +</a> )</li> <li> <a href="http://www.wxwidgets.org/">wxwidgets</a> </li> <li> <a href="http://www.fltk.org/">fltk</a> </li> <li> <a href="http://www.ultimatepp.org/">ltimate ++</a> </li> <li> <a href="https://www.juce.com/">juce</a> </li> <li>...</li> </ul><p>особенно <a href="http://doc.qt.io/qt-5/qtexamplesandtutorials.html">в qt есть хорошие уроки</a> и инструменты, которые помогут вам начать работу. наслаждайтесь!</p><p>обратите внимание, однако, что вы должны <b>избегать платформы</b> функциональность, такая как win32 api или mfc. это связывает вас без нужды на конкретной платформе практически без каких-либо преимуществ.</p>

<p>независимый от ос алгоритм "<em> создание приложений с графическим интерфейсом на c++ в три этапа </em>":</p><ol> <li> <p>установить <a href="https://www.qt.io/download-open-source/">qt creator</a> </p> <p> <a href="https://i.stack.imgur.com/f87hl.png"><img src="https://i.stack.imgur.com/f87hl.png" alt="enter image description here"></a> </p> </li> <li> <p>создать новый проект (приложение qt widgets)</p> <p> <a href="https://i.stack.imgur.com/vxvsj.png"><img src="https://i.stack.imgur.com/vxvsj.png" alt="enter image description here"></a> </p> </li> <li> <p>построить это.</p> </li> </ol><p>поздравляю, у вас есть ваш первый графический интерфейс на c++.</p><p>теперь вы готовы прочитать много <a href="http://doc.qt.io/">документации</a> , чтобы создать что-то более сложное, чем приложение с графическим интерфейсом "hello world".</p>

<p>учитывая комментарий "скажем windows xp в качестве примера", вы можете выбрать следующие варианты:</p><ul> <li> <p>взаимодействуйте напрямую с операционной системой через ее api, который для microsoft windows является неожиданным неожиданным вызовом <a href="http://en.wikipedia.org/wiki/windows\_api">windows api</a> . окончательной ссылкой на winapi является microsoft <a href="http://msdn.microsoft.com/en-us/library/ms632586(vs.85).aspx">веб-сайт msdn</a> . популярное онлайновое учебное пособие для начинающих для этого <a href="http://www.winprog.org/tutorial/">учебник по программированию win32 api для forger</a> . классическая книга для этого - книга чарльза петцольда <a href="https://rads.stackoverflow.com/amzn/click/com/157231995x">программирование windows, 5-е издание</a> .</p> </li> <li> <p>используйте платформу (как с точки зрения операционной системы, так и с точки зрения компилятора), например, <a href="http://en.wikipedia.org/wiki/microsoft\_foundation\_class\_library">mfc</a> , которая оборачивает winapi в класс c++. ссылка для этого снова msdn. классическая книга для этого - jeff prosise's <a href="https://rads.stackoverflow.com/amzn/click/com/1572316950">программирование windows с помощью mfc, 2nd edition</a> . если вы используете, скажем, codegear c++ builder, то здесь указана опция <a href="http://en.wikipedia.org/wiki/visual\_component\_library">vcl</a> .</p> </li> <li> <p>используйте кросс-платформенную библиотеку, такую как <a href="http://en.wikipedia.org/wiki/gtk%2b">gtk +</a> (оболочка c++: <a href="http://en.wikipedia.org/wiki/gtkmm">gtkmm</a> ), <a href="http://en.wikipedia.org/wiki/qt\_%28toolkit%29">qt</a> , <a href="http://en.wikipedia.org/wiki/wxwidgets">wxwidgets</a> или - <a href="http://en.wikipedia.org/wiki/fltk">fltk</a> , который оборачивает api конкретной ос. преимущества этого в том, что в целом ваша программа может быть скомпилирована для разных ос без необходимости изменения исходных кодов. как уже упоминалось, у каждого из них есть свои сильные и слабые стороны. одним из соображений при выборе того, который использовать, является лицензия. в приведенных примерах gtk + & gtkmm - это лицензия lgpl, qt - под различными лицензиями, включая проприетарную, wxwidgets - под собственной лицензией wxwindows (с переименованием в wxwidgets license), а fltk - под lgpl, за исключением. для справки, учебника и/или книг, обратитесь к веб-сайту каждого для деталей.</p> </li> </ul>

<p>поскольку я уже был там, где вы сейчас находитесь, я думаю, что могу "ответить" вам.</p><p>дело в том, что нет простого способа сделать графический интерфейс. графические интерфейсы сильно зависят от кода платформы и ос, поэтому вам следует начать читать документацию по вашей целевой платформе/ос по api управления окнами. хорошая вещь: есть много библиотек, которые устраняют эти ограничения и абстрактные различия архитектуры в едином многоплатформенном api. предложенные ранее gtk и qt являются некоторыми из этих библиотек.</p><p>но даже это немного слишком сложно, так как множество новых концепций, типов данных, пространств имен и классов вводятся одновременно. по этой причине они используют в комплекте с некоторым графическим редактором wysiwyg. они в значительной степени делают возможным программирование с графическим интерфейсом.</p><p>подводя итог, можно сказать, что существуют также несвободные "среды" для разработки графического интерфейса, такие как visual studio от microsoft. для тех, кто имеет опыт работы с delphi, visual studio может быть более знакомым. существуют также бесплатные альтернативы полной среде visual studio, поставляемые microsoft: <a href="http://www.microsoft.com/express/">visual studio express</a> , что более чем достаточно для начала разработки графического интерфейса пользователя.</p>

<p>я нашел веб-сайт с "простым" руководством: <a href="http://www.winprog.org/tutorial/start.html">http://www.winprog.org/tutorial/start.html</a> </p>

<p>qt самый лучший.</p>

<p>легко создать .net windows gui на c++.</p><p>смотрите следующий учебник от <a href="http://msdn.microsoft.com/en-us/library/ms235634%28vs.80%29.aspx">msdn</a> . вы можете скачать все, что вам нужно (visual c++ express) для <a href="http://www.microsoft.com/express/">бесплатно</a> .</p><p>конечно, вы привязываете себя к .net, но если вы просто играете или нуждаетесь только в приложении windows, у вас все будет хорошо (у большинства людей windows все еще есть ... пока).</p>

<p>я использую fltk, потому что qt не бесплатны. я не выбираю wxwidgets, потому что мой первый тест с простой программой hello world дает исполняемый файл размером 24 мб, fltk 0,8 мб ...</p>