문제

많은 사람들이 어느 것이 더 낫다는 의견을 가지고 있는 것 같습니다.저는 실제로 이러한 의견을 묻는 것이 아닙니다. 제가 알고 싶은 것은 세부 사항입니다.하나의 그래픽 툴킷을 다른 그래픽 툴킷과 다르게 만드는 요소는 무엇이며, 이러한 차이점 중 Qt와 Gtk+에는 어떤 차이점이 있습니까?

도움이 되었습니까?

해결책

Gtk+와 직접 대화할 수는 없지만 이전 직장에서는 Gtkmm을 사용했고 현재 직장에서는 Qt를 사용합니다.둘 다 C++이므로 일관성이 있지만 Gtkmm은 C로 작성된 Gtk+ 코드에 대한 래퍼일 뿐입니다.

직장을 바꾸었을 때 Ui 코드의 주요 차이점 중 하나는 두 툴킷이 레이아웃을 처리하는 방식이었다는 것을 기억합니다.어떤 부분은 Gtk가 더 낫다고 생각했고 어떤 부분은 Qt가 더 낫다고 생각했습니다.둘 다 결국에는 원하는 위치에 위젯을 얻을 수 있게 해줍니다.

Gtkmm을 사용한 디버깅은 약간 고통스러웠습니다. 왜냐하면 클래스는 일반적으로 구조체에 대한 포인터를 보유하고 Gtk+ 함수를 호출하는 것 외에는 아무 것도 하지 않았기 때문입니다.추가적인 수준의 간접적인 행동은 짜증스러울 수 있습니다.

Qt에는 적어도 내가 사용했던 Gtkmm 버전에 비해 다양한 설정에서 유용할 수 있는 보조 코드가 더 많습니다.프로그램에 새로운 차원을 추가해야 할 때 스레딩, 프로세스 간 통신 및 네트워킹을 더 쉽게 만드는 기능이 모두 높이 평가됩니다.또한 STL 컨테이너보다 더 건전한 인터페이스를 가지고 있다고 생각되는 컨테이너를 사용하고 싶다면 컨테이너도 있지만 결국에는 거의 동일한 작업을 수행하므로 약간의 이점이 있습니다.

Gtkmm과 Qt 사이의 신호/슬롯 메커니즘은 다릅니다.Qt는 신호/슬롯에 사용되는 메타 정보를 생성하기 위해 컴파일 프로세스의 추가 단계에 의존합니다.신호나 슬롯을 사용하는 객체는 QObject에서 상속되어야 하며 QObject 상속은 다이아몬드 구조가 없는 첫 번째 상속이어야 합니다.예를 들어, 이로 인해 신호를 내보내는 추상 인터페이스를 정의하기가 어렵습니다.장점은 본질적으로 스레딩 문제를 인식하고 필요할 때 신호/슬롯 연결을 이벤트 기반 연결로 변환한다는 것입니다.Gtkmm은 간단한 C++ 클래스인 SigC 신호를 사용하며, 제가 보기에는 더 다양한 상황에서 유용한 것으로 보입니다.또한 연결을 만드는 개체만 매직 기본 클래스에서 상속해야 한다고 기억합니다.게다가 슬롯은 객체이기 때문에 매우 훌륭하고 적응 가능한 펑터 객체로도 사용할 수 있습니다.

다른 차이점이 있다고 확신하지만 지금 기억나는 것은 이것이다.Gtkmm에 대한 나의 마지막 경험은 약 3년 전이었으므로 해당 항목 중 일부는 지금쯤 변경되었을 수 있습니다.

다른 팁

차이점을 이해하려면 역사를 이해하는 것이 가장 좋습니다.

QT는 UI로 개발되었으며 처음에 KDE가 처음 개발되기 시작했을 때 라이센스 문제가있었습니다. KDE는 그 당시 선택이 많지 않아 QT를 선택했습니다 (Motif, TCL/TK는 몇 가지 이름을 지정합니다)

김프가 개발되기 시작했고 당시 창 툴킷은 개발자가 필요로하는 것에 대해 긁히지 않았기 때문에 GIMP 툴 키트 (GTK)를 작성하기 시작했습니다. 얼마 후 그것은 GTK를 다시 쓰고 객체 지향 (GTK+)으로 만들기로 결정했습니다.

또한 이시기에 QT의 잠재적 라이센스 문제로 인해 그놈이 시작되었고 GTK+ 라이브러리를 사용하기로 결정했습니다.

이제 당신이 보면 QT 디자인 그리고 GTK 디자인 Wikipedia의 항목에서는 시스템 간의 차이점을 볼 수 있습니다.

QT는 다음을 언급합니다.

크로스 플랫폼 응용 프로그램 개발 프레임 워크

gtk+는 다음을 언급합니다.

그래픽 사용자 인터페이스를 만들기위한 크로스 플랫폼 위젯 툴킷.

이러한 항목을 믿어야한다면, 이것이 우리가 둘 사이의 주요 차이점 일 수 있다고 생각하지만 오늘날 세상에서 상당히 좋은 선이라고 말할 것입니다.

무엇보다도 C에서 GTK+를 사용할 수 있습니다.

또한 GTK+ 응용 프로그램에는 닫기 버튼으로 지속적으로 변경되는 대화 상자가있는 경향이 있습니다. QT는 OK/Apply/Cancel 라인을 따라있는 경향이 있습니다. 그래도 이것이 툴킷 수준에서 얼마나 많은지를 시행하는지 모르겠습니다.

프로그래밍에 관해서는 GTK가 어떤 콜백 메커니즘을 사용하는지 모르겠지만 QT의 신호 슬롯 메커니즘은 절대적으로 암석입니다.

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