누군가 GUI가 어떻게 작동하고 언제 사용해야하는지 설명 할 수 있습니까? [닫은]


16

나는 약 한 달 동안 C ++을 배우고 있으며 더 나아 가기 전에 계속 해야하는 지루한 질문을 지우고 싶습니다. GUI가 무엇인지 알고 있지만 실제로 어떻게 작동하는지 잘 모르겠으며 인기있는 예제가 있습니까?

커맨드 라인 프로그래밍이 기본 요소라는 것을 알고 있지만 GUI를 사용하는 것이 재미있을 것입니다.

약 3 백만 건의 다른 질문이 있지만 질문을 저장하겠습니다.


1
마지막 줄은 나를 웃게 만들었습니다 :) +1
CyprUS

답변:


28

몇 개의 GUI 라이브러리를 일반화하고 있지만 매우 높은 수준에서 이해해야 할 가장 중요한 개념은 GUI가 이벤트 중심이라는 것 입니다.

콘솔 응용 프로그램에서 사용자 입력은 일반적으로 정의한 특정 지점에서 발생합니다. 사용자에게 프롬프트를 표시하고 입력을 기다리며 해당 입력을 기반으로 무언가를 계산합니다. 주요 차이점 중 하나는 입력이 곳 에서만 발생한다는 것 입니다. 명령 줄에서 텍스트를 읽는 중입니다 ( stdinC ++).

GUI 응용 프로그램에는 일반적으로 입력이 발생할 수 있는 여러 위치 (예 : 다른 조치 또는 텍스트 필드를 수행하는 단추)가 있습니다. 이벤트가 시작됩니다. 예를 들어, 단추를 클릭하면 이벤트가 트리거됩니다. 이 이벤트는 이벤트 핸들러에 의해 처리되어야합니다. 이벤트 핸들러 는 보통 이러한 짝수가 트리거 될 때 호출 되는 이벤트 객체 를 취하는 메소드 일뿐 입니다. 버튼은 이벤트 핸들러에 대해 어떻게 알 수 있습니까? 당신은 일반적으로 구독 (또는 들어 ).

다음은 "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을 클릭 할 때마다 "버튼 저장이 클릭되었습니다"라는 메시지 상자가 나타납니다.

GUI 응용 프로그램에는 두 단계가 있다고 상상할 수 있습니다.

  • GUI 설정 : 시작시 짧은 시간. 모든 오브젝트가 작성되고 서로 연결됩니다.
  • 이벤트 루프 : 귀하의 GUI는 하나 개의 큰 년 동안 루프 그냥 이벤트가 트리거 될 때까지 공회전이 앉아있다.

이것은 매우 간단한 예이지만, 어떤 프레임 워크를 사용하든 버튼을 클릭하면 메시지 상자를 표시하는 것이 좋습니다.

프레임 워크의 경우 많은 것들이 있습니다 .C ++의 경우 Qt를 권장합니다.

마지막 조언 : 백그라운드에서 무슨 일이 일어나고 있는지 실제로 알 때까지 GUI 디자이너로부터 멀리하십시오. 간단한 예제를 작성하고 이벤트 루프를 먼저 이해 한 다음 더 복잡한 레이아웃으로 넘어가는 것은 그리 어렵지 않습니다.


클래스 정의 끝에 세미콜론을 추가하고 상속을 공용으로 만들면 적절하고 가능한 C ++ 구문이됩니다.
Lstor

1
끝난. 그러나 코드를 실행할 수 없으므로 잘못된 기대를 높이고 싶지 않았습니다. 내 경험의 대부분은 Swing에 있으며 아마도 클래스 이름에 반영됩니다. 동일한 개념이 다른 프레임 워크에서 다르게 호출됩니다.
sebastiangeiger

1
+1 이것은 질문에 답하는 유일한 해답 인 것 같습니다 (저는 프레임 워크에 대해서만 묻는 것이 아니라 일반적인 개념에 대해 묻는 것 같습니다)
Federico klez Culloca

1
으아 아아아 ...
DeadMG

7

지금은 GUI 포로 그래밍을 배우는 것만 큼 좋은 시간입니다. C ++을 알고 있으므로 QT를 보는 것이 좋습니다. 훌륭한 문서, 거대한 사용자 기반 및 배울 수있는 많은 예제 / 자습서.


1
Qt의 경우 +1-@David-Qt는 Qt Creator라고하는 자체 개발 환경을 가지고 있으며 다른 환경에 비해 무료이며 비교적 단순합니다. Qt는 강력하고 직관적이며 광범위하며 문서화가 잘되어 있으며 대규모의 사용자 기반이 있습니다. 시작하기가 쉽고 자신의 일을 시작하고 시작하는 많은 예가 있습니다. 이것은 배우는 좋은 방법입니다. 여기에서
Roger Attrill

나는 이것을 내려 놓을 경향이있다. QT는 무엇을 찾아야할지 모른다면 C ++에서 실제로 많은 나쁜 습관을 권장합니다. – 단 한 달의 C ++ 후에도 그렇지 않습니다. 또한 C ++의 복잡한 측면을 다룹니다. 가능하면 먼저 다른 언어로 GUI 프로그래밍을 시작하고 C ++를 올바르게 작성하는 데 집중합니다.
Konrad Rudolph

3

Microsoft Visual Studio C ++ Express로 시작할 수도 있습니다 . IDE는 매우 친숙하고 사용하기 쉬우 며 무료입니다! 첫 번째 GUI 응용 프로그램을 매우 빠르게 만들 수 있습니다 ... 다른 방식 으로 이벤트 중심 프로그래밍 의 기본 사항을 이해하는 데 집중할 수 있습니다. 마스터해야합니다.

직접 WPF 기반 응용 프로그램을 작성하는 것으로 시작할 수도 있지만, 처음에는 Windows Forms부터 시작할 것입니다. 이는 Microsoft의 Windows Forms API를 사용하는 기본 C ++이기 때문에 이해하기 어려운 기술입니다.


1
VC ++ Express에서는 다음과 같이 GUI를 작성할 수 있습니다. 1. 매우 오래되고 성가 시며 말도 안되는 Win32 API 2. 쓰레기 더미가 오래된 MFC 3. WTL은 좋지만 크로스 플랫폼은 아닙니다. 4. C ++ / CLI는 인기가없고, 심하게 지원되지 않으며 (지능성이 없어도) 너무 복잡합니다. Qt는 더 쉽고 크로스 플랫폼이며 GUI 디자이너가 훌륭하며 유용한 표준 비 GUI 클래스가 많으며 C ++에서 표준 라이브러리가 작은 C ++에서 매우 중요합니다.
Anton Barkovsky

0

아마도 c에 태그가 추가 된 StackOverflow에 더 적합 할 것입니다. 어쨌든.

구글에서이 중 몇 가지를 찾아보세요; Qt, WxWidgets, TheForgers의 WinApi, Fltk ...

GUI는 사용하기 어렵지 않습니다. 특히 c ++을 이미 알고 있다면 특히 그렇습니다. 내가 생각하는 WxWidgets와 함께 가라. Qt는 한 달 동안 학습하기에는 너무 복잡합니다. 몇 시간 안에 Wx를 수령 할 수 있습니다.


-1

사용자는 복잡한 것을 좋아하지 않습니다. 콘솔은 복잡한 것이므로보다 친숙하고 이해하기 쉬운 GUI 응용 프로그램을 만들어야합니다. 이것이 내가 본 가장 확실한 이유입니다. gtk 또는 Qt를 볼 수 있습니다.이 두 가지가 가장 인기있는 것입니다.


2
CLI는 복잡하지 않으며 정의에 따라 GUI는 사용자에게 더 복잡합니다. 덜 복잡하지 않고 더 쉽게 액세스 할 수 있습니다.
Ominus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.