Я обобщаю пару библиотек 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, пока вы не узнаете, что происходит на заднем плане. Нетрудно написать несколько простых примеров и сначала понять цикл событий, а затем перейти к более сложным макетам.