Qt Quick 대 Qt 위젯
저는 Qt를 처음 접하고 Qt Quick Project와 Qt Widget Project의 차이점을 잘 이해하지 못합니다.
사용자가 회전하고 기울일 수있을뿐 아니라 회전하고 확대 / 축소 할 수있는 육각형 격자를 그리는 프로그램을 만들고 싶습니다. 결국 MIDI 컨트롤러가됩니다. 어떤 유형의 프로젝트가 더 좋으며 그 이유는 무엇입니까?
나는 작동하기를 바랍니다.
참고 : Qt 위젯은 QML 위젯으로 대체되었습니다. 이 답변은 질문에 응답하며 이제는 이전 Qt 위젯에 대한 질문입니다.
Qt Quick은 스마트 폰 앱에서 볼 수있는 멋진 애니메이션 전환을 많이 지원하는 선언적 스마트 폰 스타일의 사용자 인터페이스입니다. 빨리 개발할 때도 좋은 선택입니다. Qt Widget은 데스크톱 지향 UI 모델입니다.
현재 (Qt5 이전), 데스크톱 시스템 기능에 대한 Qt Quick 지원이 부족합니다 (그러나 개선됨). 빠른에서는 메뉴, 도구 모음, 대화 상자 및 기타 표준 데스크톱 동작에 대한 지원이 많지 않지만 위젯은 매우 잘 지원됩니다.
앱이 데스크톱 및 태블릿 플랫폼에서 마치처럼 떠오르지 길 원하십니까, 아니면 고유 한 사용자 UI 위젯을 중심으로 구축하고 구축하고 있습니까? Mat가 말했듯이 Qt Quick이 원하는 기능을 지원한다면 아마도 가장 빠른 접근 방법이 될 것입니다. 모든 기능을 자동화 데스크톱 버전을 생성하고 Qt 위젯이 최선의 선택 일 것입니다.
전문적으로 qt 애플리케이션을 개발하는 사람으로서 저는 위젯보다 qml을 선택할 것입니다.
위젯은 아주 기본적인 것들에 적합하지만 조금 더 멋진 제안한다면 위젯은 곧 부족할 것입니다.
Qml은 훨씬 더 유연합니다. 위젯 위젯 레이아웃 시스템을 사용하는 대신 원하는 곳에 항목을 고정 할 수 있습니다. 위젯에는 결함이 가득한 반면 의존성 결함은 거의 없습니다. 그리고 속성 바인딩 시스템을 사용하면 UI를 모델과 동기화하기가 매우 우수합니다.
참고 :이 답변에서 "Qt 위젯"은 새 Qt 애플리케이션을 만들 때 선택할 수있는 Qt 위젯 애플리케이션을 나타냅니다.
질문이 처음 게시 된 지 7 년이 지났지 만 여기에 그 이후의 모든 발전을 무력화하기위한 " 목표 "2 센트가 있습니다.
재충전
언어
Qt Quick 프로젝트는 QML 및 JavaScript를 사용 합니다.
Qt 위젯 프로젝트는 C ++ 코드를 사용합니다. (Qt 용 Python 바인딩 인 PyQt 및 PySide는 Python을 사용합니다.)
성능 및 코딩
따라서 Qt 위젯은 Qt Quick에 비해 낮은 수준으로 될 수 있습니다. 그러나 이것은 장기적으로 Qt 위젯 프로젝트가 더 빨리 실행되고 더 나은 성능을 의미합니다. Qt 위젯이 많이 있기 때문에 API ( QtCore 모듈 , Qt 스타일 시트 등)에 더 많은 노출이 있습니다 . 즉, 데스크톱 개발에 자주 사용됩니다.
Qt Quick은 모바일 개발에 더 적합합니다 (데스크탑 개발에도 여전히 사용할 수 있습니다). 바로 사용 가능한 팝업 , 애니메이션 , 탭 및 레이아웃, 플리커 블 , 서랍 및 일반적인 컨트롤이 있습니다. 모바일 개발에서 모두 유비쿼터스입니다.
UI 디자인
둘 다 ui
QtDesigner와 함께 작동하는 파일을 가지고있어 레이아웃을 설정하고 인터페이스를 만들기위한 높은 수준의보기를 제공합니다. (Qt 빠른 필요는 .ui.qml
. Qt 위젯에서는 .ui
.) .ui
파일은 필수도 아니고 언어도 언어입니다. QML / JS 또는 C ++ / Python을 사용하여 프로그래밍 방식으로 디자인 및 레이아웃을 수행 할 수 있습니다.
배우기
프로그래밍 이 완전히 보기 처음 이라면 Qt는 빠른을 먼저 살펴 보는 것이 좋습니다. 개인적으로 Qt는 빠른은 학습 곡선이 더 부드럽고 무수한 프로젝트를 수행하기 위해 작업하기가 더 쉽다고 생각 합니다. 이유 때문에 "Qt Quick " 이라고 불립니다 . (그래도 Qt 위젯을보고 보지는 놓치지 마세요. QtQuick을 능가하는 멋진 모듈이 있습니다.)
이전에 C ++ 또는 파이썬 프로그래밍 봤는데 경우, 내가 먼저 Qt는는 위젯에서 살펴 본다 제안,에 익숙해 자신 신호 및 슬롯 메커니즘 을 (예를 들어 관심을 가질만한 및 모듈 , , 디자인을 프로그램과 함께) (예를 들어, 데이터 표시를위한 모델 / 뷰 프로그래밍 ).sql
network
gui
특히 C ++의 경우 이벤트 처리를 수행하는 대부분의 비 Qt 라이브러리는 while
루프를 사용 하지만 Qt에서는 처리합니다. 그들은 신호와 사용 합니다 .
결국, 주로 Qt 위젯을 사용하는 경우에도 작업 할 수있는 높은 수준의 선언적 언어를 제공하고 작업을 더 빨리 접근 할 수 있습니다. (모바일 개발 용)
Qt는 포럼 과 함께 Qt Quick 및 Qt Widget 프로젝트에 대한 예제를 제공합니다 . 장기적으로는 걱정할 필요가 없습니다. (StackOverflow를 잊지 마세요!)
Qt Quick + Qt 위젯
지금까지 우리는 호출을 호출의 독립 체처럼 취급했습니다. 그러나 QML을 C ++ 에 통합 하는 것은 가능합니다 . 이를 통해 Qt 위젯, C ++ 및 기타 모듈을 사용할 수 있습니다. 예를 들어, QtQuick은 C ++에서 QML에 등록 할 수 있거나 등록 해야하는 것을 제공하지 TreeView
않습니다 TreeModel
. 종종가 문제의 분리 의 QML Qt는 각각 C ++로 UI 로직으로 분리 프로그램을 권장 여기서 피치.
이는 또한 집중적 인 SQL 쿼리, 알고리즘 또는 문법 유용 http / xml 요청을위한 백엔드 가 필요한 경우 입니다. 멋지지 보편나요? QML / JS 요청 엔드와 C ++ 백엔드. Fullstack Qt'er. :-)
(내가 시도하지 않는 것은 Python 백엔드를 사용할 것입니다. 아직 PyQt를 건드리지 않을 것입니다 ...)
먼저 위젯부터 시작해야 생각합니다. 위젯 UI는 이전 경험이 당신이 쉽게 쉽게 배울 수있는 프론트 엔드에 관한 것이라면 추가적으로 쉽게 qt를 배울 수 있도록 도와줍니다.
Qt Quick의 정리은 인라인 ECMAscript가 활성화 된 QML, JSON 선언적 언어입니다. Qt 위젯을 사용하면 디자이너가 스타일 시트를 만들 수 있으며 개발자는 외장 C ++ 코딩을 수행합니다.
QML은 실행에 처리됩니다. 프레임 워크 내에서 모든 것이 함께 실행될 수있는 것보다 소프트웨어 설계자의 의사 결정에 유연성을 더합니다.
참고 URL : https://stackoverflow.com/questions/8626355/qt-quick-vs-qt-widget
'ProgramingTip' 카테고리의 다른 글
Gradle 로그는 어디에 있습니까? (0) | 2020.11.15 |
---|---|
Elisp에서 기호를 공유로 변환 (0) | 2020.11.15 |
Visual Studio (Express) 2008에서 Unix (LF) 줄 끝을 강제로 적용 할 짐? (0) | 2020.11.15 |
serialVersionUID를 사용하거나 경고를 선언 하시겠습니까? (0) | 2020.11.15 |
리플렉션을 사용하여 .NET에서 오버로드 된 메서드를 호출하는 방법 (0) | 2020.11.14 |