문제

나는 이제 Bare Bones QT/GTK+유사 프레임 워크의 개발을 시작하려는 아이디어를 가지고 있지만,이 프로젝트의 생성을 시작하기 전에 몇 가지를 알고 싶습니다.

  • GTK+ 및 QT의 구조는 무엇입니까?
  • 내 자신의 프레임 워크를 구축하려면 창 관리자를 개발해야합니까?
  • 시작할 몇 가지 리소스?
도움이 되었습니까?

해결책

그것은 적어도 시작 프로젝트로서 주요 사업처럼 들립니다.

예를 들어 GTK+의 "구조"가 의미하는 바를 확실하지 않습니다. 당신은 볼 수 있습니다 객체 계층 GTK+의 경우, 구현 된 객체 (GTK+는 객체 지향 API 임)가 서로 어떻게 관련되어 있는지 알려줍니다. 해당 정보에서 코드를 어떻게 구성 할 수 있는지 추측 할 수 있습니다.

그리고 아니, 당신은 당신의 자신의 창 관리자를 쓸 필요가 없습니다. 툴킷은 주로 일어나는 일에 관심이 있습니다 내부에 창 관리 자체가 아닌 Windows. 물론 "플랫폼"이 더 넓은 범위를 가져야하고 WM을 포함해야한다고 결정할 수 있습니다.

다른 팁

GUI/응용 프로그램 프레임 워크를 개발하는 것은 중요한 사업입니다. 당신은 원할 수도 있습니다 매우 왜 다른 프레임 워크를 작성 해야하는지 분명히하십시오.

언급 한 두 프로젝트는 오픈 소스입니다. 왜 거기서 시작하지 않습니까?

  1. gtk : git clone git : //git.gnome.org/gtk+
  2. QT : git 클론 git : //gitorious.org/qt/qt.git

에드 GTK와 QT의 구조가 무엇인지, 자신의 미망인 관리자를 작성 해야하는지 (답변 : 아니오) 시작하는 방법을 묻습니다. 적어도 처음 두 가지에 대한 답은 소스 코드에 있습니다. 잊지 마십시오. 어떤 분야의 훌륭한 실무자들은 다른 사람들을 보면서 배웁니다. 읽기 코드는 다르지 않습니다.

GUI/APP 프레임 워크를 작성하는 것은 훌륭한 학습 경험이지만, 상당히 작은 앱 프레임 워크조차도 매우 큰 일이 될 것이며, 다른 여러 프레임 워크 및 위젯 툴킷을 사용하여 응용 프로그램을 작성하는 데 상당히 전문가가 될 때까지 실제로 해결해야 할 것은 아닙니다. .

나는이 10 년 초반에 이런 일을 한 번 이런 일을했다. 15 년 넘게 MAC에 대한 프로그래밍, Windows가 10 개 이상의 Mac을 프로그래밍 한 후에는 기본 그래픽, 이벤트 및 위젯 API 및 PowerPlant, MFC를 포함한 다양한 객체 지향 툴킷에 직접 프로그래밍했습니다. 및 MacApp. Palmos 응용 프로그램 작업을 시작했을 때 몇 주 동안 Powerplant에 모델링 된 매우 작은 앱 프레임 워크를 작성했습니다. 그러나 나는 많은 GUI 시스템에 대한 수십 년간의 광범위하고 깊은 경험 없이는 전혀 성공할 수 없었습니다.

Linux/X11의 경우이 작업을 수행하는 것이 훨씬 더 많은 작업입니다. Mac OS 및 Windows와 달리 X11 또는 Linux 공급 내장 사용자 인터페이스 위젯 또는 그래픽 프리미티브 또는 텍스트 레이아웃 기능을 방해하지 않기 때문입니다. GTK+는 그놈 생태계의 일부입니다. 위젯을 제공하고 Gobject에서 메시지 대기열 및 내부 통신을 가져오고 GDK에 의존하여 X11과의 그래픽 및 이벤트 통신을 추상화하고 단순화하며 Pango 및 Cairo를 사용하여 텍스트 렌더링 및 레이아웃을 사용합니다. 나는 그 시스템을 통해 모든 일을하고 있으며 아마도 많은 똑똑한 사람들이 수십 명의 인력을 나타냅니다. 그리고 나는 QT가 매우 비슷하다고 확신합니다.

그래서 당신이 정말로 이것을하고 싶다면, 나는 당신을 추천 할 것입니다.

  1. a 많은 여러 운영 체제에서 다양한 앱 및 위젯 툴킷. 그것은 당신이 단순히 배우는 데 도움이 될 것입니다 어떻게 그러한 시스템은 작동하지만 그들은 그대로 설계되었습니다. 그리고 그것은 당신에게 잘 작동하는 것에 대한 느낌과 잘 작동하지 않는 것에 대한 느낌을 줄 것입니다.
  2. 버그 수정 또는 새로운 기능을 하나 이상의 다양한 오픈 소스 프레임 워크에 기여합니다. gtk+는 a 초보자가 작업 할 작업 목록. 또 다른 위대한 오픈 소스 프레임 워크입니다 wxwidgets.
  3. 전문가 수준 C/C ++ 프로그래머가 되십시오.

몇 년 동안 그렇게하면 자신의 프레임 워크를 다루는 데 적합한 전문 지식을 갖게됩니다.

여기서 답변 중 일부가 약간 과장 될 수 있다고 생각합니다. 분명히 QT 및 GTK와 같은 품질, 너비 및 깊이를 만드는 것은 큰 미용입니다. 그러나 당신은 더 간단한 물건을 만들고 그것이 어떻게 작동하는지에 대해 많은 것을 배울 수 있습니다. 대학에서했던 것처럼하는 것이 좋습니다. glut과 함께 OpenGL을 사용하십시오. 그런 다음 이미 기본 드로잉 기능과 이벤트 시스템을 확보했습니다. 그런 다음 버튼, 텍스트 필드 등에 대한 클래스를 만들어야합니다.

당신이 그것을 정말로 간단하게 만들고 싶다면 각 구성 요소는 그것이 어디에 그려진지 알고 마우스 클릭 안에 있는지 여부를 확인할 수있는 일종의 경계 상자가 있어야합니다. 또한 버튼, 확인란 등이 클릭 한 나머지 코드를 알릴 수있는 일부 시스템을 만들어야합니다.

이것은 실제로 여기 로켓 과학 사람들이 그것을 만드는 것은 아닙니다. 게임은 몇 년 동안 자신만의 간단한 GUI 툴킷을 만들었습니다. 당신은 그 접근법도 시도 할 수 있습니다. 나는 이전에 게임 엔진 위에 간단한 GUI Tikeit을 모델링했습니다. 버튼과 텍스트 필드는 단순히 스프라이트 일 수 있습니다.

그러나 예, GTK+ 및 QT와 경쟁 할 무언가를 만들고 싶다면 잊어 버리십시오. 그것은 수년에 걸쳐 팀의 노력입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top