커뮤니티 | 큐티/임베디드/큐토피아 | PODO | SDL | 마이크로윈도우 | 리눅스프로그래밍 | 기타 | 포인트순위 | 최근게시물최근게시물 RSS  
korone.net에 다루었으면 하는것은요?
 
 
 
 
 
1,164
1,221
3,878
3,804,155
  현재접속자 : 48 (회원 0)






배너 신청 문의

 
작성일 : 17-11-06 17:08
[QT/Win32] QT Widget, Qt Quick, Qt Quick Controls 2 의 관헤 궁금점입니다
 글쓴이 : Fensy
조회 : 1,127   추천 : 0  
안녕하세요 이번에 Qt를 처음 개발하려고 하는데요..

그동안 C#, Android를 개발한 경험이 있습니다.

QT Creatir 를 설치하여 간단한 study를 하고 있는데요, 프로젝트 생성 시, Widget, Quick, Quick Controls2

3가지 Application 종류가 있더군요.. 각각 만들어 보았는데, Widget같은 경우 Visual studio 와 비슷한 방식인거 같고

Quick과 Quick Controls 2는 QML(안드로이드 xml과 비슷한지요?)를 사용하는것 같은데요

정확히 3가지의 차이를 모르겠습니다.

혹시 간단하게라도 각각의 차이를 알고싶습니다..
11



devilqoo 17-11-06 17:28
 
Widget 은 traditional한  Qt 개발 방식 이구요... 2D 페인팅엔진을 기반으로 합니다. (C++)

여기에 QML이라는 스크립트 언어?를 도입해 UI개발에 날개를 달았는데요 ... (C++ & QML)

QtQuick은 QML로 만든 컴퍼넌트 이구요 Quick과 Quick Controls 2는 후자가 좀 더 최신 컴퍼넌트라 이해하시면 될 것 같습니다.

어느 개발자 분의 얘기에 의하면 Widget으로 개발할 때 보다 생산성이 10배는 늘었다라고 할 정도로 극찬하시던데 ^^

3D 기반이라 퍼포먼스 측면에서도 Widget base보다 훨씬 미려한 UI개발이 가능합니다.

제가 대충 파악하고 있는 내용은 이정도 입니다.
devopia 17-11-08 16:10
 
부가적으로 보충하자면,

QWidget은 S/W 랜더링 기반이고 QML은 OpenGL과 같은 H/W 랜더링 기반입니다.
QtQuick Controls 2는 임베디드 또는 모바일쪽에 최적화된 UI 컨트롤 집합입니다.
QML을 이용한 화면 디자인 시 디자이너를 통한 다양한 효과를 직접 줄 수 있기때문에 개발 효과가 월등히 높습니다. 개발자와 화면 디자이너의 역할을 구분할 수 있다는 것은 생산성 향상 또한 기대할 수 있는 부분입니다.

QML의 가장 큰 단점은 문법 자체가 Qt 프로젝트로 한정되기에 C++이나 자바쪽 프로젝트에는 별 도움이 되지 않다는 것...
     
devilqoo 17-11-09 09:42
 
모바일 관련 업데이트 소식은 들은 적이 있었는 데

QtQuick Controls 2가 그런 용도였군요.

덕분에 완전 이해하였습니다. :)
구름님 17-11-09 23:11
 
개발을 Qt로 하시겠다니 말씀드리겠습니다.
C++ 코드로 작업을 해야 하는 내부 사정은 어차피 거기서 거기라 드릴 말씀은 없고요.
일단, C#이나 JAVA등등의 뭐 언어가 거기서 거기겠지 생각하시고 Qt를 접하시면 오산입니다요 ㅎㅎ
Qt는 C++이고 framework이라는 단어를 갖다 붙일 만큼의 방대한 컴포넌트를 제공하니
우선 무슨 작업을 하는데 어떤 것을 어떻게 써야하는지를 익히시는게 중요할 겁니다.
그래야 응용력도 상승하실 테니까요.

QWidget은 JAVA의 swing을 쓰신다 생각하면 이해가 빠르실까요?
Qt의 QML은 C#의 WPF정도라 생각하시면 될꺼구요. 하지만 비교하지 마세요. 토나와요;;
QML은 정식명칭은 아니란 얘기도 있지만, Quick Markup Language입니다. 말그대로 빨라요.. 개발속도가.. 디따 빨라요.
Quick은 QML이 구동되는 환경 같은것을 칭한다 보시면 됩니다. 라이브러리나 엔진 정도의 느낌? 모듈? 여튼 basic입니다.
Quick Controls는 QML로도 QWidget base같은 화면을 만들기 위한 element의 집합, 하나의 모듈이라 볼 수 있는데요,
Controls 말고도 Windows, GraphicalEffect, StateMachine, 등등 여러가지 많이 있습니다.
Windows는 MDI, SDI window 나 MainWindow 일반 Window처럼 윈도우 창,
Controls는 ComboBox, Label, Button, ... 등등의 윈도우 콘트롤,
GraphicalEffect는 OpacityMask, Blur, ... 등등의 그래픽 효과, 등등 이런식으로 제공되는 요소들의 집합입니다.
StateMachine은 거의 모든 QML element가 갖고 있는 state와는 다른 더 체계적인 state machine을 제공하고요.
하여간, 등등..

이제, QML의 설명이 시작됩니다. 너무 끝내주는 녀석이라 살짝은 주절거려줘야 된다능..
QML의 시작은... QGraphicsView라는 것이 있는데, QWidget방식의 graphical한 분야에서 뛰어난 녀석인데요.
이녀석이 제법 멋지게 돌아가는 녀석이라, QGraphicsView를 base로 QDeclarative가 나오며, 이것이 QML 1.x가 됩니다.
코드를 까보신다면 QGraphicsView-QGraphicsScene의 QGraphicsItem들과 차이가 별로 없다는 것을 볼 수 있습니다.
QML 1.x의 element를 QGraphicsObject로 캐스트 연산하면 변환되요.
Qt 5.5부터였던가.. 이녀석은 구시대로 물러나고 OpenGL 기반의 QML 2.x를 기본으로 지원하게 되었습니다.
아쉬워진 점은.. 어쩌면 시대에 맞게 당연할지도 모르지만, 풍선도움말인 tooltip이 사라지게 되었다는 것입니다.
그렇지만 달라진만큼 추가되는 것도 있기 마련이라. QWidget 기반으로 제공되는 ComboBox, Label, ProgressBar, 등등의
GUI object들을 QML 2.x에서도 그것처럼 쓸 수있도록 모아둔 집합체인 QtQuick.Controls 2.x와 Windows, 그외에 많은
module들이 추가되게 되었습니다. 근데.. GraphicalEffect를 제외하면 어지간해선.. 정말 어지간해선 쓸일이 없어요..
대략 10개 정도의 QML 기본 element 사용법들만 익히면 화면 작업은 끝입니다.
QML 디자이너로 하는 작업보다 손가락으로 타다닥 하는게 더 빠르기도 하는 상황이 거의 태반이고요,
화면 효과를 위해 그래픽 디자이너가 작업해야하는 몫도 잘만 상의하면 반 이상의 일이 줄어드는 경우도 있습니다.
이런 QML을 사용해야 할 상황이 되면, 솔직히 딱 까놓고 말씀드려 그 상황에선 QML은 단점이 없습니다.
사용하면 할 수록, 알면 알게 될 수록 단점이 없다는 것이 상당히 웃겨요. 장점 뿐이라는 얘기죠.
javascript의 편리성과 하나의 속성값이 바뀌면 연계된 다른 속성값이 자동적으로 바뀌는 property binding.
이 2가지가 절묘하게 QML의 개발 performance를 상승 시킵니다. 쌩 javascript에서 jQuery의 편리함은 명함 못내밀어요.
게다가 gabage collection도 백그라운드에서 동작되기 때문에 보통 있을 일도 없지만 실수로 발생되는 memory leak도
보완됩니다. 또, Qt C++ 코드와 친화성이 좋습니다. C++ 코드와 친화성이 좋다는 얘긴 살짝 머리만 굴리면
어떤 대상과도 잘 엮이는 프로그램을 작성할 수 있다는 것과도 같습니다.
QML은 desktop, embedded, 등 어떤 환경의 플랫폼과도 최고의 궁합입니다.
QML의 한 부분 정도만이 어느 특정 플랫폼에 최적화되고 그런것은 없어요.
그랬다면 한 부분이 최적화가 아니라 QML 전체가 최적화 된것이란 말과 진배 없겠죠.
QML이 저가 chipset에서도 동작되기 위해 반드시 OpenGL ES를 필요로 하지 않지만,
그럴 경우 어떤 element들은 성능이 떨어지는 것은 어쩔 수 없다는 얘기는 본적이 있네요.
그리고, 윈도우즈 환경에선 OpenGL이 환영받지 못해서 DirectX를 OpenGL 호출처럼 쓰는 ANGLE 프로젝트가
적용된 Qt를 쓸 수도 있을 것인데요. 이 경우는 살짝 뭔가 다르군 하는 기분이 들겁니다.

대충 여까지..
 
 

Total 7,000
번호 제   목 글쓴이 날짜 조회 추천
7000 [QT/Win32] qt addTab에서 enw instance 할시 배경이미지를 불… (1) LightSlive 05-19 41 0
6999 [QT/X11] string to time_t로 큐티공… 05-17 40 0
6998 [QT/Embedded] 타이머를 이용해서 자동을 화면을 전환 하고 … 신형군 05-17 43 0
6997    [QT/Embedded] 타이머를 이용해서 자동을 화면을 전환 하고 … devopia 05-18 111 0
6996 [QT/Win32] QTableView 에 DragDrop 기능 구현 질문 입니다. NaturalSof… 05-16 40 0
6995    [QT/Win32] QTableView 에 DragDrop 기능 구현 질문 입니다. devopia 05-17 107 0
6994 [QT/Win32] tab order qttest 05-16 45 0
6993 [QT/Embedded] 중첩된 프레임 버퍼를 한 이미지로 저장할 수… (1) 하오링… 05-15 57 0
6992 [QT/Win32] qlabel link걸기 (1) qttest 05-14 65 0
6991 [QT/Embedded] QWebEngineView위에 그림 그리기 (1) 오리오… 05-14 70 0
6990 [QT/Embedded] qwtPlotGrid 질문 콩콩2 05-08 110 0
6989    [QT/Win32] qwtPlotGrid 질문 devopia 05-09 195 0
6988 [QT/Embedded] 그림이 뒤로 깔리는 문제 오리오… 05-08 108 0
6987 [QT/Win32] DockWidget을 자유롭게 배치하려고합니다. (2) tt33 05-02 159 0
6986 [QT/Embedded] QT TextEdit에 작성된 글자를 quint8로 변경하는 … (1) 나야나 05-02 145 0
6985 [QT/Embedded] QLCDNumber 범위값 설정 문제 관련하여 질문드립… (2) 김촙촙 05-01 146 0
6984 [QT/Embedded] QWidget 타입의 값 비교 질문드립니다. (3) 규르 05-01 169 0
6983 [QT/Win32] IP 카메라 스트리밍 관련 질문 흑참 04-30 147 0
6982 [QT/Embedded] radiobutton 선택표시 질문 드립니다. (2) 규르 04-30 149 0
6981 [QT/X11] QTimer 설전문의 태백 04-30 128 0
6980 [QT/Embedded] QT tabtWidget 관해서 질문 드립니다. (3) 규르 04-27 166 0
6979 [QT/Embedded] quint8에서 QString으로 변경 방법에 대해 문의 … (4) 나야나 04-27 180 0
6978 [QT/Win32] 디버깅 에러 질문... (1) 흠냥 04-25 151 0
6977 [QT/Embedded] 지도 위에 그림 그리기 오리오… 04-24 135 0
6976 [QT/Win32] QT 웹호스팅 db값 받아오기 (2) 왕치킨… 04-19 152 0
6975 [QT/Embedded] qt 5.10에서 구글맵 넣는법 오리오… 04-18 158 0
6974 [QT/Embedded] rotate 문제 (1) 오리오… 04-13 198 0
6973 [QT/X11] qt update()->paint()함수 호출하는데 UI 업데이… (2) bash001 04-13 187 0
6972 [QT/X11] qt 5.9버전을 다운받아 설치하니깐 build 모드가… (1) 태백 04-12 201 0
6971 [QT/Win32] Qt 5.5 CDB문제 (1) Sad7Dayz 04-12 199 0
 1  2  3  4  5  6  7  8  9  10    


About korone.net | Copyright 2003 korone.net. All rights reserved.