[Qt] Model/View

amudomollaยท2023๋…„ 7์›” 20์ผ
0

Qt

๋ชฉ๋ก ๋ณด๊ธฐ
11/12
post-custom-banner

๐Ÿ“• ์ฐธ๊ณ  ์„œ์ 


List๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” Model(๋ฐ์ดํ„ฐ), View(๋ฆฌ์ŠคํŠธ ๊ทธ๋ ค์คŒ), Delegate(์Šคํƒ€์ผ)์ด ํ•„์š”

Model/View ์•„ํ‚คํ…์ฒ˜

Model/View๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” Model๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ GUI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” View๋ฅผ ์˜๋ฏธ
๋ฐ์ดํ„ฐ๋ฅผ GUI๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•˜๋Š” ์ผ์ข…์˜ ์•„ํ‚คํ…์ฒ˜์ด๋ฉฐ, MVC(Model-View-Controller)๋ผ๊ณ  ๋ถ€๋ฆ„

MVC๋Š” 3๊ฐ€์ง€์˜ ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌ์„ฑ
1. ํŒŒ์ผ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์ด Qt๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์ง€ ์•Š์€ ์ƒํƒœ
2. Model Container๋กœ์จ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” Container
-> Model์€ GUI ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ๋ฅผ View์— ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  Model๋กœ ์ ‘๊ทผํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œ
3. View๋Š” Model๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„์ ฏ์„ ํ†ตํ•ด ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํ•ธ๋“ค๋งํ•  ์ˆ˜ ์žˆ๋Š” GUI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต

Delegate๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ์™€ ๊ฐ™์€ ํ•ธ๋“ค๋ง์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต

Model

  • ๋ฐ์ดํ„ฐ๋ฅผ ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
  • ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ์ฒด, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ค๋ฅธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต

View

  • ๋ฐ์ดํ„ฐ๋ฅผ GUI์ƒ์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์œ„์ ฏ
  • ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” QListView, ํ…Œ์ด๋ธ” ์Šคํƒ€์ผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” QTableView ๋“ฑ ๋‹ค์–‘ํ•œ ์œ„์ ฏ ์ œ๊ณต

Delegate

  • Model์— ์ €์žฅ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋งคํ•‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ View ์œ„์ ฏ์ƒ์— ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ธ๋“ค๋งํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ

ListModel/ListView

ListModel (์ฐธ๊ณ )

  • ๊ฐ€๊ณตํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ(์›์‹œ ๋ฐ์ดํ„ฐ)๋ฅผ ListView ์•„์ดํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์•„์ดํ…œ
  • ListElement๋Š” ํ…์ŠคํŠธ ์ด์™ธ์— ์ด๋ฏธ์ง€ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ
  • ์ฝ˜ํ…์ธ ๋Š” ๋™์ ์œผ๋กœ ์ •์˜ํ•˜๊ฑฐ๋‚˜ QML์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ ๊ฐ€๋Šฅ
  • append(), insert(), move(), remove() ๋ฐ set()์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋ธ์˜ ๋‚ด์šฉ์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ๋ฉ”์„œ๋“œ ์ œ๊ณต
  • ๊ฐ ์š”์†Œ์˜ ์—ญํ• (์†์„ฑ)์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋ธ์˜ ๋ชจ๋“  ์š”์†Œ์— ๊ณตํ†ต๋˜์–ด์•ผ ํ•จ

ListView ()

  • ๋ชจ๋ธ์— ๋™์ ์œผ๋กœ ์•„์ดํ…œ์„ ์ถ”๊ฐ€, ์‚ญ์ œ

Delegate

  • View ์•„์ดํ…œ์ƒ์— ํ‘œ์‹œํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ Style ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • QML์—์„œ์˜ Delegate๋Š” Component๋ฅผ ์‚ฌ์šฉํ•ด ์ ์šฉ
profile
๐Ÿ‘ฉโ€๐Ÿ’ป ๊ธฐ๋ก ๋ฐ ๋ณต์Šต์„ ์œ„ํ•จ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€