๊ด€๋ฆฌ ๋ฉ”๋‰ด

๊ตฌ๋ฆ„

Qt Framwork ์†Œ๊ฐœ ๋ณธ๋ฌธ

๐Ÿ‘จ‍๐Ÿ’ป๊ฐœ๋ฐœ (deprecated)

Qt Framwork ์†Œ๊ฐœ

rattan32 2016. 5. 19. 19:42

 

 

Qt Frame work.

1990๋…„๋Œ€์— trolltech ์—์„œ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‹œ์ž‘ํ•ด์„œ ์ง€๊ธˆ์€ UI ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ network,xml,container class ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

Qt ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ "Write Once, Compile Anywhere" ์ด๋ผ๋Š” ๊ฒƒ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํ•œ๋ฒˆ์˜ ์ฝ”๋“œ ์ž‘์„ฑ์œผ๋กœ ๊ฐ ํ”Œ๋žซํผ๋ณ„๋กœ ๋นŒ๋“œ๋งŒ ํ•˜๋ฉด ์™„์ „ํžˆ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

์œ„ ๋‘ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๊ฐ๊ฐ Ubuntu, Windows ์—์„œ ๋นŒ๋“œ ํ›„ ์‹คํ–‰ ํ•œ ๋ชจ์Šต์ด๋‹ค.

๋””ํดํŠธ UI,ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์™ธํ˜•์ด ๋‹ค๋ฅด๊ธด ํ•˜์ง€๋งŒ ๋‘ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ ์ธ๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ๋‹ค.

 

Qt ๋ฅผ ๋‚˜๋ฆ„๋Œ€๋กœ ์ •์˜ํ•˜์ž๋ฉด,

์˜คํ”ˆ์†Œ์Šค ํฌ๋กœ์Šค ํ”Œ๋žซํผ C++ Framework ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™๋‹ค. ๋ฌผ๋ก , C++ ๋ง๊ณ ๋„ ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ์—ฐ๋™ ๋˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ฃผ๋กœ์“ฐ๋Š” ์–ธ์–ด๊ฐ€ C++ ์ด๋‹ค ๋ณด๋‹ˆ C++ Framework ๋กœ ๋ณด์ด๋Š”๊ฒƒ ๊ฐ™๋‹ค.

 

์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ฝ”๋”ฉํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐฐํฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๊ฒƒ์ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ผ์ด์„ผ์Šค ์ด๋‹ค.

Qt ๋Š” ์ƒ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์šฉ ๋ผ์ด์„ผ์Šค ์™€ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ GPL ๋ผ์ด์„ผ์Šค๋กœ ๋‚˜๋‰œ๋‹ค.

์ƒ์šฉ ๋ผ์ด์„ผ์Šค์˜ ๊ฒฝ์šฐ ์›” 300๋‹ฌ๋Ÿฌ ์ •๋„์˜ ๊ฐ€๊ฒฉ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ๊ฒฐ๊ณผ๋ฌผ ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์›” 300๋‹ฌ๋Ÿฌ์— ๋‹ฌํ•˜๋Š” ๊ธˆ์•ก์„ ๊ฐœ์ธ์ด ์ง€์†์ ์œผ๋กœ ๋‚ด๊ธฐ๋Š” ์–ด๋ ค์šฐ๋ฏ€๋กœ ๊ธฐ์—…์ด ์•„๋‹Œ ์ด์ƒ ๋ณดํ†ต ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋Š” ์˜คํ”ˆ์†Œ์Šค์šฉ Qt ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.


์˜คํ”ˆ์†Œ์Šค๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ ํ•  ๊ฒฝ์šฐ, 2๊ฐ€์ง€์˜ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋‹ค.

ํ•˜๋‚˜๋Š” ๋™์  ๋งํฌ(dll,so ํŒŒ์ผ)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํฌํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํŒŒ์ผ ๋‚ด์— ๋ชจ๋‘ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

์ „์ž์˜ ๊ฒฝ์šฐ ์†Œ์Šค์ฝ”๋“œ ๊ณต๊ฐœ์˜ ์˜๋ฌด๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ ํ›„ ์‹คํ–‰ ํŒŒ์ผ์„ ๋ฐฐํฌ ํ•˜๋Š” ๊ฒƒ์— ์•„๋ฌด ์ œํ•œ์ด ์—†๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ ์•ˆ์— GPL ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฅด๋Š” ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋  ๊ฒฝ์šฐ, ํ•ด๋‹น ์ฝ”๋“œ ์ „์ฒด๊ฐ€ GPL ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค. ์ฆ‰ ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœ ํ•ด์•ผํ•˜๋Š” ์˜๋ฌด๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 

 

 

mainwindow ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์•„๋ฌด ์ฝ”๋“œ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ ํ›„ ์‹คํ–‰ ํ•˜๋ ค๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด 7๊ฐœ์˜ dll ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค ์‹คํ–‰ ํŒŒ์ผ ํฌ๊ธฐ๋Š” ๊ฒจ์šฐ 25KB ์ธ๋ฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ๋Š” ํ•ฉ์ณ์„œ 10MB ๊ฐ€ ๋„˜์–ด๊ฐ„๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— Qt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋ณด์žฅ๋„ ํ•  ์ˆ˜ ์—†๋‹ค.

(Qt ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์œ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” PC๋ฅผ ์ฐพ๊ธฐ ์ •๋ง ํž˜๋“ค ๊ฒƒ ์ด๋‹ค.)

๋”ฐ๋ผ์„œ ์–ด์ฉ” ์ˆ˜ ์—†์ด Qt ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ๊ฐ™์ด ๋ฐฐํฌํ•ด์•ผ ํ•˜๊ณ , ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์„œ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์ € ๋งŽ์€ dll ํŒŒ์ผ์„ ๊ฐ™์ด ๋ฐฐํฌํ•ด์•ผ ํ•œ๋‹ค.

 

์ด๋Ÿฐ ๋ถˆํŽธ์„ ํ•œ๋ฒˆ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด (ํ”„๋กœ๊ทธ๋žจ์˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘๋‹ค๋ฉด) ์‹คํ–‰ ํŒŒ์ผ ์•ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชฝ๋•… static ์œผ๋กœ ๋„ฃ๋Š”๊ฒƒ ์ธ๋ฐ, ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ฝ”๋“œ ๊ณต๊ฐœ์˜ ์˜๋ฌด๊ฐ€ ์ƒ๊ธด๋‹ค. (์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ ๋ฅผ ์ฐธ์กฐ)

์‹ค์ œ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์ด ๋ฐฐํฌํ•˜๋Š” Qt ํ”„๋กœ์ ํŠธ๋กœ Blizzard ็คพ ์˜ Battle.net app ์ด ์žˆ๋Š”๋ฐ ์†Œ์Šค ๊ณต๊ฐœ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.

๊ทธ ์™ธ์— vlc ๋‚˜ VirtualBox ๋“ฑ ์˜ ํ”„๋กœ๊ทธ๋žจ๋„ Qt๋ฅผ ์ด์šฉํ•˜์˜€์ง€๋งŒ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๋ฏ€๋กœ Qt ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์†Œ์Šค ๊ณต๊ฐœ๋ฅผ ํ•  ์˜๋ฌด๋Š” ์—†๋‹ค.

 

์ธ์Šคํ†จ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ๋”๋ผ๋„ ๋ฐฐํฌ ์ž์ฒด์— ํฐ ๋ถˆํŽธ์€ ์—†์„๊ฒƒ ๊ฐ™๋‹ค.

ํ•„์ž์˜ ๊ฒฝ์šฐ ๋ฐฐํฌํŒ์„ static build ํ•˜์—ฌ ์‹คํ–‰ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์†Œ์Šค๋ฅผ github์— ์˜ฌ๋ฆฌ๋Š” ์‹์œผ๋กœ Qt๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

Qt๋ฅผ ์‚ฌ์šฉ ํ•œ ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ ์‹œ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ• ์ง€๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž˜ ์ƒ๊ฐํ•ด ๋ณด๊ณ  ๊ฒฐ์ •ํ•  ์ผ์ธ๊ฒƒ ๊ฐ™๋‹ค.

 

ํ•„์ž์˜ ๊ฒฝ์šฐ, raspberry PI ์—์„œ GUI๋ฅผ ์ œ์ž‘ ํ•ด์•ผ ํ–ˆ๋˜ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ, Java ๋ฅผ ์ด์šฉํ•˜๊ธฐ์—๋Š” ๋นŒ๋“œ ์‹œ๊ฐ„์ด๋‚˜ ์‹คํ–‰ ์ด ๋„ˆ๋ฌด ๋Š๋ ค์„œ ๋Œ€์•ˆ์ด ์—†์„๊นŒ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ๋ฐœ๊ฒฌ ํ•œ ๊ฒƒ์ด Qt Framwork ์ด๋‹ค. ์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋•Œ๋„ ์ƒ๋‹นํžˆ ์‰ฝ๊ฒŒ ์ตํ˜€์„œ ์‚ฌ์šฉํ•œ ๊ธฐ์–ต์ด ๋‚œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์‹œ์ž‘ํ•œ Qt ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ง€๊ธˆ์€ ๋‚˜์˜ ์ฃผ ์‚ฌ์šฉ Framework ๊ฐ€ ๋˜์—ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์—์„œ ๋นŒ๋“œ ํ•˜์—ฌ native ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋งค๋ ฅ ๋•Œ๋ฌธ์— ์ •๋ง ์• ์ฐฉ์ด ๊ฐ€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธ๊ฒƒ ๊ฐ™๋‹ค.

 

Comments