GUI с С++? или С# и Java - путь?

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

Я много гуглинга, и каждый раз, когда я читал больше страниц, я больше смущаюсь, я узнал, что в прошлом были слишком известные варианты, которые являются WinAPI и MFC. Я попытался заглянуть в WinAPI, но это кажется довольно сложным и требует много времени, поэтому я попросил совета у преподавателя, и он сказал мне, что если я хочу писать программы с графическим интерфейсом, я бы лучше изучил С# или Java, а не использовал С++, который быстрее, но лучше разработан для приложений с низким уровнем программирования, таких как драйверы и так далее. Поэтому я искал в Интернете, чтобы узнать, используется ли С++ для написания приложений в настоящее время, и к моему удивлению Firefox, Google Chrome, Notepad ++ и многие другие графические приложения на sourceforge.net написаны на С++ в противоречии с моим советом инструктора. Также я узнал, что вы можете использовать библиотеки QT или GTK для создания графических приложений на С++, но я не знаю, как это сделать, или если это правда.

Итак, мой вопрос - это то, что является лучшим в настоящее время вариантом для эффективного написания графических программ независимо от того, насколько крутой является кривая обучения. Я googled для вариантов интерфейса С++, потому что он считает, что это будет быстрее, чем Java или приложения С#. Если у кого-то другое мнение, пожалуйста, пишите.

Ответы

Ответ 1

Самый быстрый способ - использовать С# и WPF. Это быстро и просто для небольших приложений, но может быть довольно сложным, на мой взгляд, и есть чему поучиться. По крайней мере, вы являетесь будущим доказательством, Microsoft, наконец, подталкивает WPF. (Visual Studio использует его, и впереди будет еще много версий) Единственным реальным недостатком является то, что вы сможете запускать приложение только в Windows.

Если вы действительно хотите доступ к "низкому уровню", там есть много вариантов взаимодействия с кодом С++.

Ответ 2

Прежде всего, если вы хотите наклониться, чтобы написать независимый от платформы GUI, тогда С# не идет.

Когда вы пишете GUI на С++, возникает вопрос о наборе инструментов, Qt и GTKmm предоставляют вам очень прочные кросс-платформенные инструментальные средства. В то время как Qt имеет более "родной" внешний вид в Windows, чем GTKmm, Java Swing позволяет писать очень хороший графический интерфейс, но он будет тяжелее и медленнее, чем один, написанный с Qt или GTKmm.

Теперь... С#/WPF такие же проблемы, как Java GUI - медленнее, чем native, но также он также блокирует вас только на одной платформе.

Мои личные советы начинаются с Qt.

Ответ 3

Если вы новичок в программировании GUI, С#/WinForms будут лучше для вас. Он довольно прост, имеет большое сообщество вокруг него, имеет множество готовых к использованию элементов управления.. и лучшую документацию когда-либо - MSDN.

Конечно, если вы ищете глубокие знания о том, "как все работает", вам нужно понять графический интерфейс Win32. Итак, вы всегда можете вернуться к С++/MFC. Я бы не предложил никаких других библиотек С++ (как Qt), а не потому, что они плохие, а потому, что им нужен хороший опыт для запуска.

Мое предложение начинается с WinForms, undestand basic и учится создавать простое приложение. Как только вы овладеете этим, идите глубже.

Ответ 4

Попробуйте Juce.

Ответ 5

Это зависит от того, какое приложение GUI вы хотите написать. Если вы хотите написать приложение с укороченной оболочкой, такое как MS Word или Firefox, то С++ - это путь, потому что рынок требует последнего небольшого количества производительности с минимальными зависимостями. OTOH, если вы хотите написать (например) интерфейс к базе данных вашей компании, производительность графического интерфейса обычно не важна, но доставка чего-то быстро и дешево, поэтому вы должны использовать что-то большее RAD, например С#.

Ответ 6

Qt очень хорошо. Люди говорят, что WTL тоже приятный, но я не использовал его.

Java и GUI не очень хорошо вписываются в мою голову. Есть некоторые родные для Java GUI-библиотеки (AWT, Swing), но они медленны и не обеспечивают интерфейс, родной для платформы, на которой он работает. Существует также SWT, который используется Eclipse, но не видел ни одного приложения, кроме Eclipse, используя его.

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

Ответ 7

С++ хорош для скорости (инструменты для рендеринга HTML, такие как хром /firefox или редакторы изображений, такие как Photoshop) и для выполнения "умений", которые вы, возможно, не могли бы сделать на других платформах.

Но это более болезненно для использования, и в любой из библиотек пользовательского интерфейса на С++ существует гораздо больше кривой luearning, чем вам хотелось бы узнать.

Поскольку вам кажется, что этого не требуется, как ясно из вашего вопроса, ваш выбор по умолчанию должен быть С# или Java или Web, как ваш консультант.

Ответ 8

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

Ответ 9

Не совсем ответ на ваш вопрос, но если вы все еще учитесь, а не в производственной линии, попробуйте изучить Win API. На самом деле, я удивлен, что никто тебе этого не сказал.

Вы видите, что все другие фреймворки /API/SDK на самом деле просто обертки вокруг этого API, и есть вероятность, что всякий раз, когда вас попросят сделать что-то нестандартное в вашем графическом интерфейсе, вы не найдете решения в своей структуре и вам понадобятся выкапывать в Win API в любом случае.

Да, это только API с Windows, и все еще зная, что происходит на самом деле за сценой, может быть очень полезно время от времени.

Только мои 2 цента.

Ответ 10

Если вы решите использовать С++, посмотрите на wxwidgets - таким образом вы не ограничиваете себя только одной операционной системой (окна в этом случае с MFC). Также QT должен быть хорошим, но я никогда не пробовал их (у меня нет большого опыта работы с wxwidgets, но несколько раз мне приходилось что-то делать с ними, они работали неплохо).

Если вам не нужна высокая производительность в gui, посмотрите на языки сценариев - у Python есть библиотека по умолчанию, которая хорошо работает (tkinter), а также привязка к wxwidgets

Ответ 11

Если вы настаиваете на использовании С++, попробуйте Win32 или GTK. См. этот поток. В противном случае я рекомендую вам попробовать другой язык, например Python для части графического интерфейса ваших приложений. Оставайтесь на своем предпочтительном языке и оберните. Не забывайте о лучшей функции С++: двоичная совместимость с C.

Ответ 12

Если у вас есть основа С++ и вы хотите расширить, я рекомендую начать с Qt. В дистрибутив входит графический дизайнер пользовательского интерфейса и Asistant - браузер для документации. Существует также отдельный продукт Qt Creator - полная IDE с учетом Qt, в которой есть все интегрированное (включая компилятор). Все это, если бесплатно и очень легко настроить. Отличные учебные пособия. Qt также включает классы non gui для общих проблем программирования (например, контейнеры, вариантный тип и т.д.). Вы можете конвертировать консольное приложение в графический интерфейс в течение нескольких часов и решить, хотите ли вы продолжить его изучение или попробовать другой инструментарий.

Просто перейдите к http://qt.nokia.com/downloads скачайте SDK, установите его, и у вас есть все, чтобы начать кодирование.

Ответ 13

QT хорош, но я попробовал JUCE, и теперь я думаю, что это лучше.

JUCE быстрый, чистый, простой в использовании. Вы можете интегрировать его с Eclipse и GCC (и minGW), использовать функции отладки (gdb под Eclipse) и многое другое.

Вы можете скомпилировать свой код в Windows, Linux, OSX, IOS и Androis без значительных изменений.

Следите за своим сайтом: http://www.rawmaterialsoftware.com/juce.php

Если вы говорите по-испански, посмотрите на эту ссылку: http://juceratot.eshost.es

Рассматривать