Qt의 위험한 코너는 무엇입니까? [닫은]


10

태양 아래에는 완벽한 것이 없습니다. Qt도 예외는 아니며 제한이 있습니다. GUI 이외의 스레드에서 픽스맵을 사용할 수 없으며 채널당 16 비트 이미지 형식으로 QImage를 사용할 수 없습니다.

Qt의 한계로 인해 어떤 상황에서 디자인을 망쳐 놓았습니까?
가장 싫어하는 단점은 무엇입니까?
프로젝트에서 Qt를 사용하는 동안 피해야 할 설계 결정은 무엇입니까?


당신은 말할 수 Qt는을? 당신이 "Q 툴킷"로 확장하면, 당신은 그것의 "는"전면을 추가 할 수 있지만 말을 / 좋은 사례를 해결한다 Qt는을? 그냥 궁금해서
Anto

@Anto : 나는 가정 the에 바인딩 corners여기에,하지 Qt,하지만 난 러시아어 해요 이후는, 단지 내 직관적 인 느낌입니다 :)
덩굴

위험한 곡선 중 하나는 프로젝트에 재정적 문제가있을 수 있다는 것입니다. Nokia는 최근 Qt의 미래를 흔들리는 마이크로 소프트 (휴대 전화에서 Win7 사용)와 계약을 체결했다.
피터 로웰

나는 C ++ 비주얼 프로그래밍에 멍청한 사람이기 때문에이 답변을 아는 데 매우 관심이 있습니다 : D
Shaheer

@Vines : "QT의 위험한 코너는 무엇입니까?"
Chris

답변:


12

아이러니하게도, Qt의 힘은 단점 중 하나라고 말합니다. 많은 강력한 구성과 확장 기능이 있으며 Qt로 작성한 코드는 "Qt 방식"으로 쉽게 강화됩니다. 기능을 다른 언어로 추출하려고하면 다시 작성해야 할뿐만 아니라 많은 Qt 관련 기술을 알아야합니다.

Qt의 폭은 프로그래머를 고용한다는 것은 Qt 경험이있는 사람에게 헌신하거나 해당 전문 지식에 대한 교육을 의미한다는 것을 의미합니다. 계약자를 빠른 속도로 얻는 것은 바닐라 C ++보다 어렵습니다.

Qt가 3.x에서 4.x로 변경되었을 때, 우리 팀은 거의 9 개월 동안 포트를 수행해야했으며 그 동안 새로운 기능이 거의 추가되지 않았습니다. 남은 시간 동안 개발 효율성을 높이기 위해 주요 업그레이드 비용을 보충하기를 희망합니다. (참고로, Qt의 장점을 생략했으며 그중 많은 것도 있습니다)


2
Qt3-Qt4 포트는 내가 아는 대부분의 사람들에게 어려웠습니다. 이 QML과 새로운 버전에서 소개 된 유사한 것들이 다시 한 번 복잡한 포트를 의미하기 때문에 걱정이됩니다.
Vitor Py

10

Qt는 표준 C ++ 라이브러리를 사용하지 않지만 자체 QString, QVector, QMap 등을 가지고 있습니다.

이것은 중요한 디자인 결정을해야한다는 것을 의미합니다 : 어플리케이션의 어떤 부분이 QString을 사용하고 어떤 부분이 std :: string을 사용합니까?

일부 부분에서는 std :: string을 사용하고 다른 부분에서는 QString을 사용하면 경계에서 QString과 std :: string 사이를 변환해야합니다.

이러한 오버 헤드를 피하기 위해 애플리케이션 전체에서 QString을 사용하기로 결정할 수 있습니다. 그러나 Qt를 기반으로하지 않는 타사 라이브러리 (예 : 부스트)를 사용하는 것이 훨씬 어렵습니다.

(std :: map vs QMap, std :: vector vs QVector 등에도 동일하게 적용됨)

Qt 유형을 사용하는 부품과 STL을 사용하는 부품을 결정 하는 것은 중요한 의미를 갖는 주요 디자인 결정입니다. 그리고 Qt가 표준 C ++ 라이브러리를 사용하지 않기 때문입니다.

IMHO, 그 결정은 프로젝트에 따라 어느 쪽이든 진행될 수 있습니다. 따라서 피해야 할 질문에 대답 할 수 없습니다.


1
나는 동의하지만, 가장자리로 나가서 QString (등 등)도 함께 사용할 수 있기 때문에 강점 중 하나라고 말합니다.
Johan

1
또한 QString을 사용하지 않는 라이브러리를 사용하는 것이 어려운 것은 아닙니다. QString을 std :: string으로 변환하거나 그 반대로 변환하는 간단한 방법이 있습니다. 별로.

@Glenn Nelson : 예. 현재 QString에 대한 변환 함수가 있습니다. 매우 유용하고 편리합니다! 그러나 특히 QVector 및 QMap의 경우 변환시 오버 헤드가 발생합니다 (예 : QVector <QString>의 경우 간단한 솔루션이 작동하지 않음). 성능 저하를 피하기 위해 설계 중에 이러한 오버 헤드를 고려해야합니다.
Sjoerd

3

이것은 질문에 직접 대답하지는 않지만 언급 할 가치가 있다고 생각합니다 .Qt의 가장 위험한 부분은 Nokia가 MSoft와 잘 지내고 있다는 것입니다.


2
그러나 그들은 Qt를 포기했습니다.
Martin Beckett

1
완전성을 위해-Qt의 상업적 부분은 이제 Digia가 소유 한 반면 Qt는 다른 사람들이 쉽게 기여할 수있는 "공개 거버넌스"시스템으로 이동했습니다. Qt가 비공개 소스로 이동하는 것을 방지하는 KDE Free Qt 기반도 있습니다.
Vishesh Handa

2

최근 QChar는 이름에도 불구하고 실제로 한 문자가 아니라 UTF-16 코드 단위에 해당한다는 것을 알았습니다. 따라서 문자 단위로 임의의 유니 코드 텍스트를 스캔하려면 문자 등을 결합하여 높고 낮은 대리모를 처리하는 알고리즘을 추가해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.