๐ ์ฐธ๊ณ ์์
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๋ฅผ ์ฌ์ฉํด ์ ์ฉ