Чи може хтось пояснити, як працює графічний інтерфейс і коли я повинен почати його використовувати? [зачинено]


16

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

Хоча я знаю, що програмування командного рядка є головою основою, я думаю, що було б весело возитися з графічним інтерфейсом.

Хоча у мене є близько 3 мільйонів інших питань, я їх врятую: D


1
Останній рядок змусив мене посміхнутися :) +1 за це
CyprusUS

Відповіді:


28

Я узагальнюю декілька бібліотек графічного інтерфейсу, але на дуже високому рівні найважливіша концепція, яку вам потрібно зрозуміти, - це те, що графічний інтерфейс визначається подіями .

У консольній програмі введення користувача зазвичай відбувається в певні точки, які ви визначили. Ви спонукаєте свого користувача, ви чекаєте його введення, ви обчислюєте щось на основі цього входу. Однією з головних відмінностей є те, що введення відбувається лише в одному місці, ви читаєте текст з командного рядка ( stdinна C ++).

У додатку GUI у вас зазвичай є кілька місць, де може відбуватися введення даних, наприклад кнопки, які виконують різні дії або текстові поля. Ось тут починають грати події. Наприклад, натискання кнопки запускає подію. Цією подією повинен займатися обробник подій , який, як правило, є лише методом, який приймає об'єкт події , який викликається, коли таке парне запускається. Як ваша кнопка знає про обробник подій? Зазвичай ви підписуєтесь (або слухаєте її).

Ось приклад "натхненний C ++", це не фактичний код QT або C ++.

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

Створюючи кнопку, ви реєструєте екземпляр класу MyClickHandler проти кнопки.

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

Тепер при кожному bнатисканні кнопки з'являється вікно з повідомленням, що "натиснути кнопку" Зберегти ".

Можна уявити, що додаток GUI має два етапи:

  • Встановіть графічний інтерфейс: короткий період при запуску, де всі об’єкти створюються та з'єднуються між собою.
  • Цикл подій : Ваш графічний інтерфейс знаходиться в одному великому циклі, а просто сидить там на холостому ходу, поки подія не запускається.

Це дуже простий приклад, але я б рекомендував у будь-якій структурі, яку ви вибрали, спробуйте показати поле з повідомленням, коли натискаєте кнопку.

У рамках їх там дуже багато: У випадку C ++ я б, напевно, рекомендував Qt.

Останнє слово поради: тримайтеся подалі від дизайнерів GUI, поки ви дійсно не дізнаєтесь, що відбувається на задньому плані. Не так складно написати кілька простих прикладів і спершу зрозуміти цикл подій, а потім перейти до більш складних макетів.


Якщо ви додасте крапку з комою до кінця визначення класу та зробите спадщину загальнодоступною, це був би правильний / можливий синтаксис C ++.
Lstor

1
Зроблено. Але я не хотів викликати жодних помилкових очікувань, оскільки код не вдасться виконати. Більшість мого досвіду є у Swing, який, ймовірно, відображається у назвах класів. Одні й ті самі поняття будуть називатися по-різному в різних рамках.
sebastiangeiger

1
+1 Це здається єдиною відповіддю, яка відповідає на це питання (мені здається, він не питає лише про рамки, він запитує про загальні поняття)
Federico klez Culloca

1
Ewwww .... потворне лайно слухача.
DeadMG

7

Зараз такий самий хороший час, як і коли-небудь, щоб вивчити графічне програмування GUI. Як ви знаєте C ++, я б рекомендував переглянути QT. Чудова документація, величезна база користувачів та безліч прикладів / навчальних посібників, з яких можна навчитися.


1
+1 для Qt - @David - Qt має власне середовище розробки під назвою Qt Creator, яке є автономним, вільним і порівняно простим порівняно з іншими. Qt є потужним, інтуїтивним, обширним, дуже добре документованим та з великою та активною базою користувачів. Почати можна легко, і є багато прикладів, щоб почати грати і починати робити власну справу - це прекрасний спосіб вчитися до речі. Завантажити його можна тут
Roger Attrill

Я схильний це спростувати. QT заохочує багато дійсно поганих практик роботи на C ++, якщо ви не знаєте, на що звертати увагу. - Що ви не зробите, лише через місяць C ++. Крім того, він торкається деяких складних аспектів в C ++. Якщо можливо, я спершу розпочну програмування GUI іншою мовою та зосередився на тому, щоб отримати C ++ правильно.
Конрад Рудольф

3

Ви також можете почати з Microsoft Visual Studio C ++ Express . IDE дуже дружній і простий у використанні (і безкоштовно!), І ви зможете створити свої перші GUI-програми дуже швидко ... Що допоможе вам сконцентруватися на розумінні основ керованого подіями програмування , іншого підходу що вам потрібно буде опанувати.

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


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

0

Можливо, більше підходить до StackOverflow з тегом c ++; але все ж таки.

Подивіться декілька з них на Google; Qt, WxWidgets, WinApi TheForgers, Fltk ...

Графічні інтерфейси не такі важкі у використанні, особливо коли ви вже знаєте c ++. Переходьте з WxWidgets, я вважаю; Qt трохи надто складний для місячного навчання. Ви можете забрати Wx за пару годин.


-1

Користувачі не люблять складні речі. Консоль - це складна річ, тому вам потрібно створити графічні програми, які є більш дружніми та зрозумілими. Це найочевидніша причина, яку я бачу. Ви можете подивитися gtk або Qt - ці два є найпопулярнішими.


2
CLI не є складним, а графічний інтерфейс за визначенням БІЛЬШЕ складний для користувача. Вони доступніші не менш складні.
Омін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.