Может кто-нибудь объяснить, как работает графический интерфейс и когда я должен начать использовать его? [закрыто]

16

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

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

Хотя у меня есть около 3 миллионов других вопросов, я спасу их: D

Дэвид
источник
1
последняя строка заставила меня улыбнуться :) +1 за это
CyprUS

Ответы:

28

Я обобщаю пару библиотек GUI, но на очень высоком уровне наиболее важная концепция, которую вам необходимо понять, - это то, что GUI управляется событиями .

В консольном приложении ваш пользовательский ввод обычно происходит в определенных вами точках. Вы предлагаете своему пользователю, вы ждете его ввода, вы рассчитываете что-то на основе этого ввода. Одним из основных отличий является то, что ввод происходит только в одном месте, вы читаете текст из командной строки ( stdinв C ++).

В приложении с графическим интерфейсом у вас обычно есть несколько мест, где может происходить ввод, например кнопки, которые выполняют различные действия или текстовые поля. Это где события вступают в игру. Например, нажатие кнопки запускает событие. Это событие должно быть обработано обработчиком события , который обычно является просто методом, который принимает объект события, который вызывается, когда срабатывает такая четность. Как ваша кнопка узнает об обработчике событий? Вы обычно подписываетесь (или слушаете это).

Вот пример, вдохновленный C ++, это не настоящий код QT или C ++.

class MyClickHandler : public ClickListener{
   void clickHandler(ClickEvent e){
      showAlertBox("The button "+e.getSource().getName()+" has been clicked"); 
   }
};

При создании Button вы регистрируете экземпляр класса MyClickHandler для кнопки.

...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...

Теперь при каждом bнажатии кнопки появляется окно с сообщением «Нажата кнопка Сохранить».

Вы можете представить, что приложение с графическим интерфейсом состоит из двух этапов:

  • Установить графический интерфейс: короткий период при запуске, когда все объекты создаются и связаны друг с другом.
  • Цикл событий : ваш графический пользовательский интерфейс находится в одном большом цикле while и просто простаивает до тех пор, пока не сработает событие.

Это очень простой пример, но я бы порекомендовал с любой платформой, которую вы выбрали, попытаться показать окно сообщения при нажатии кнопки.

Для фреймворка их много: в случае C ++ я бы, вероятно, рекомендовал Qt.

Последнее слово: держитесь подальше от дизайнеров GUI, пока вы не узнаете, что происходит на заднем плане. Нетрудно написать несколько простых примеров и сначала понять цикл событий, а затем перейти к более сложным макетам.

sebastiangeiger
источник
Если вы добавите точку с запятой в конец определения класса и сделаете наследование общедоступным, это будет правильный / возможный синтаксис C ++.
Lstor
1
Выполнено. Но я не хотел выдвигать никаких ложных ожиданий, поскольку код в конце концов не будет работать. Большая часть моего опыта в Swing, что, вероятно, отражается в названиях классов. Одни и те же понятия будут называться по-разному в разных рамках.
Себастьян
1
+1 Это, кажется, единственный ответ, который отвечает на вопрос (мне кажется, что он спрашивает не только о фреймворках, он спрашивает об общих понятиях)
Федерико Клез Каллока
1
Ewwww .... уродливый слушатель дерьмо.
DeadMG
7

Сейчас самое подходящее время для изучения графического программирования. Как вы знаете C ++, я бы порекомендовал посмотреть на QT. Отличная документация, огромная база пользователей и множество примеров / руководств, доступных для изучения.

mattnz
источник
1
+1 для Qt - @David - Qt имеет свою собственную среду разработки под названием Qt Creator, которая является автономной, бесплатной и относительно простой по сравнению с другими. Qt мощный, интуитивно понятный, обширный, очень хорошо документированный и с большой и активной пользовательской базой. Начать легко, и есть множество примеров, с которых можно начать играть и заниматься своими делами - это отличный способ научиться. Его можно скачать здесь
Roger Attrill
Я склонен понизить это. QT поощряет множество действительно плохих практик в C ++, если вы не знаете, на что обращать внимание. - Что вы не делаете, после всего лишь одного месяца C ++. Кроме того, он затрагивает некоторые сложные аспекты в C ++. Если возможно, я бы сначала начал программировать на другом языке и сконцентрировался на правильном понимании C ++.
Конрад Рудольф
3

Вы также можете начать с Microsoft Visual Studio C ++ Express . IDE очень дружественный и простой в использовании (и бесплатный!), И вы сможете очень быстро создавать свои первые приложения с графическим интерфейсом ... Это поможет вам сосредоточиться на понимании основ программирования , управляемого событиями , другой подход что вам нужно будет освоить.

Вы также можете непосредственно начать с создания приложений, управляемых WPF, но сначала я бы начал с Windows Forms, это одна технология, которую не так просто понять, поскольку это просто базовый C ++ с Microsoft Windows Forms API.

Jalayn
источник
1
В VC ++ Express вы можете написать GUI с: 1. Win32 API, который очень старый, громоздкий и просто смешной 2. MFC, который является старой кучей дерьма 3. WTL, который лучше, но не кроссплатформенный. 4. C ++ / CLI, который непопулярен, плохо поддерживается (даже не имеет смысла) и слишком сложен. Qt проще, кроссплатформенный, имеет приятный дизайнер GUI и имеет большое количество полезных не-GUI классов, что очень важно в C ++ с его небольшой стандартной библиотекой.
Антон Барковский
0

Может быть, больше подходит для StackOverflow, помеченный c ++; но в любом случае.

Посмотрите несколько из них на Google; Qt, WxWidgets, WinApi от TheForgers, Fltk ...

GUI не так сложен в использовании, особенно если вы уже знаете c ++. Перейти с WxWidgets я считаю; Qt слишком сложен для изучения за месяц. Вы можете забрать Wx через пару часов.

Себ Хольцапфель
источник
-1

Пользователям не нравятся сложные вещи. Консоль - сложная вещь, поэтому вы должны создавать приложения с графическим интерфейсом, которые являются более дружественными и простыми для понимания. Это самая очевидная причина, которую я вижу. Вы можете посмотреть на gtk или Qt - эти два являются самыми популярными.

Сергей
источник
2
CLI не сложен, и GUI по определению более сложны для пользователя. Они более доступны, не менее сложны.
Ominus