문제

저는 약 2 년 전에 우분투를 사용하기 시작한 C# 프로그래머입니다. C 또는 C ++에서 GUI 프로그래밍을 배우고 싶습니다. 나는 모노를 정말 좋아하지 않고 내 시스템에 충돌하는 경향이 있습니다. C ++에 대한 기본적인 이해가 있습니다. 나는 C에서 일한 적이 없지만 멋져 보인다. 어떤 툴킷을 배우거나 사용해야합니까? 각각의 프로/단점을 제공하십시오. 감사!

도움이 되었습니까?

해결책

C ++는 당신에게 더 친숙하기 때문에 raii와 같은 관용구를 사용할 수 있기 때문에 gtkmm이 더 잘 맞을 수 있습니다. 불행히도, GTKMM은 약간 불완전하고 GTK의 덜 사용되지 않은 부분을 놓치고 있습니다.

그러나 자체적으로 GTK+는 본질적으로 C ++에서 찾은 것과 유사하지만 C 함수만으로 객체 모델을 노출시킵니다. C ++의 구조 및 파괴와 같은 것은 C API에서 명시 적으로 수행되며 위젯 인스턴스는 포인터를 통해 독점적으로 처리됩니다.

둘 다 시도하고 프로젝트가 더 잘 맞는지 확인하십시오.

다른 팁

GTKMM에 기여하는 데 도움이 되었기 때문에 편견 혐의를받을 수 있었지만 먼저 사용자였습니다. 어쨌든 C ++에 익숙하다면 GTKMM을 강력히 추천합니다. 참조 카운트 객체는 스마트 포인터로 자동으로 관리되므로 GTK+보다 GTKMM을 사용하면 메모리 관리가 훨씬 쉽습니다. 또한 객체를 자동 변수 (예 : 스택에서)로 인스턴스화하고 범위에 따라 수명을 결정할 수 있습니다. 실제로 GTK+보다 GTKMM의 메모리 누출을 피하는 것이 훨씬 쉽습니다.

또 다른 거대한 GTKM+보다 GTKMM의 장점 (내 의견으로는)은 타입 안전 신호 프레임 워크를 사용하는 것입니다. GTK+에서는 끊임없이 공허 포인터로 물건을 전달한 다음 자신이 생각해야한다고 생각하는 유형으로 캐스트해야합니다. GTKMM에서는이 작업을 수행 할 필요가 없으며 신호 처리기의 유형 안전성을 시행하는 컴파일러를 활용할 수 있습니다.

C/GTK+에 비해 또 다른 큰 장점은 새로운 클래스를 쉽게 도출하는 것입니다. GTK+에서는 많은 상용구 코드를 작성하고 기본적으로 언어의 일부로 C ++에서 무료로 얻을 수있는 것들 (예 : 상속, 생성자, 파괴자 등)을 다시 구현해야합니다. 이것은 더 지루하고 오류가 발생하기 쉽습니다.

Greyfade는 GTKMM이 불완전하다고 언급했으며, 어느 정도는 옳습니다. GTKMM은 GTK+ API의 모든 것을 절대적으로 다루지 않습니다 (끔찍하게 가까워 지지만). 그러나 실제로는 GTKMM 코드에서 항상 C/GTK+ API를 사용할 수 있기 때문에 이것은 문제가되지 않습니다. 이 C 호환성은 바인딩이 API의 일부를 덮지 않은 경우 대안이없는 C# 또는 Python 바인딩과 같은 C ++의 큰 장점입니다.

GTKMM (IMO)을 통해 GTK+를 선택하는 유일한 이유는 GTKMM이 C 라이브러리 위에 래퍼이기 때문에 약간의 추가 오버 헤드가 있기 때문입니다 (그러나 이것은 일반적으로 단일 기능 호출 일 뿐이므로 무시할만한 영향을 미칩니다). 또는 C ++를 싫어하거나 사용할 수없는 경우.

당신이 C# 프로그래머라면, 당신은 왜 보지 않겠습니까? 발라?

나는 대부분의 Linux GUI 응용 프로그램에 pygtk를 사용하지만 Python은 지금 작업중 인 프로젝트에 비해 너무 느 렸기 때문에 GTK+와 GTKMM 중 하나를 선택하려고했습니다. 그런 다음 발라를 만났습니다.

그것은 꽤 새로운 언어이므로 현재 문서화는 매우 제한되어 있지만 C# 구문을 가진 C# Syntax는 두 세계 중 최고라고 생각합니다.

나는 배우라고 제안한다 발라 Gedit과 함께.

http://www.valaide.org/doku.php : 발라

https://launchpad.net/valable : 일식

http://code.google.com/p/vtg/ : Gedit

http://abderrahim.arablug.org/blog/ : Anjuta

많은 사람들이 말했듯이 GTKMM은 좋은 메모리 관리, 참조 계산 객체 등을 제공합니다. 그러나 한 부서에서 떨어집니다. 선적 서류 비치. GTKMM 프로젝트 전체는 "문서화되지 않은"현상으로 고통 받고 있으며, 여기서 게시 된 (및 타사 사이트에 다시 게시) 문서는 단순히 헤더 파일의 Javadoc 스캔입니다.

당신이 당신이 무엇을하고 있는지 알고 싶었습니다. 예를 들어, 스크롤 된 창 GTKMM에서 더 나은 문서화 된 클래스 중 하나입니다.

QT를 보셨습니까?
좋은 C ++ 디자인, 크로스 플랫폼 및 LGPL입니다.

가장 좋은 방법은 먼저 GTKMM을 배우는 것입니다! GTKMM의 기본 사항을 완료 한 후에는 GTK+는 배우기가 매우 간단해야합니다 (C를 알고 포인터가 편안하다면).

C를 모르는 경우 Dennis Ritchie의 C 프로그래밍 언어를 읽음으로써 빠르게 배울 수 있습니다.

GTKMM은 C ++ 용으로 특별히 설계되었으므로 C#과 다소 유사하므로 둘 다 객체 지향적이므로 GTKMM은 GTK+보다 먼저 배우기가 상대적으로 쉽습니다.

gtkmm 이후 GTK+로 이동할 수 있습니다.

대부분의 오픈 소스 회사는 GTKMM 대신 GTK+를 사용하므로 GTK+는 배울 수 있습니다!

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