рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдореЙрдбрд▓ рдХреЛ QML рдореЗрдВ рдФрд░ C ++ рджреЛрдиреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ C ++ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣рд╛рдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реАрдзреЗ QML рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ XMLHttpRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ QML рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ C ++ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рддреАрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВрдВрдЧрд╛:
- рд╕реА ++ рдореЙрдбрд▓;
- QML рдореЙрдбрд▓
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ред
рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╢реНрд░реЗрдгреА рдореЗрдВ рд░рдЦрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╣рдо рдХреНрдпреВрдПрдордПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
QML рдореЗрдВ рдореЙрдбрд▓-рджреГрд╢реНрдп:
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рд╢реВрдиреНрдп, рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рдПрдХ: рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рджреГрд╢реНрдп
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рджреЛ: рдХрд╕реНрдЯрдо рджреГрд╢реНрдп
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рддреАрди: QML рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореЙрдбрд▓
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рдЪрд╛рд░: рд╕реА ++ рдореЙрдбрд▓
1. рд▓рд┐рд╕реНрдЯрдореЙрдбрд▓
рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рд╣реИред рд▓рд┐рд╕реНрдЯрдореЙрдбрд▓ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ / рд╣рдЯрд╛рдпрд╛ (рдХреНрд░рдорд╢рдГ, рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ)ред рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
1) рд╕реНрдерд┐рд░
рдЬрдм рд╣рдо рдореЙрдбрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрди рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк рд▓рд┐рд╕реНрдЯ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдХреЛ рд╕реВрдЪреАрдХрд░рдг рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЬрдм ListModel рдореЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ListElement рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА "ListElement: рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"ред рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рддрддреНрд╡ рд╕рднреА рд╕рдорд╛рди рд╕реВрдЪреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред
import QtQuick 2.0 Rectangle { width: 360 height: 240 ListModel { id: dataModel ListElement { color: "orange" texts: [ ListElement { text: "one" }, ListElement { text: "two" } ] } ListElement { color: "skyblue" texts: [ ListElement { text: "three" }, ListElement { text: "four" } ] } } ListView { id: view anchors.margins: 10 anchors.fill: parent spacing: 10 model: dataModel delegate: Rectangle { width: view.width height: 100 color: model.color Row { anchors.margins: 10 anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter spacing: 10 Repeater { model: texts delegate: Text { verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering text: model.text } } } } } }
рд╣рдо рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдЧреНрд░рдВрдереЛрдВ рдХреА рднреВрдорд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдореЙрдбрд▓ рдореЗрдВ, рд╕рднреА ListElement рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛рдиреА рдПрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдореЙрдбрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
ListModel { id: dataModel ListElement { color: "orange" text: 1 } ListElement { color: "skyblue" text: "second" } }
рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ: "рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ [рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рд╕рдВрдЦреНрдпрд╛] рдХреА рдореМрдЬреВрджрд╛ рднреВрдорд┐рдХрд╛ 'рдкрд╛рда' рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдФрд░ рджреВрд╕рд░реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдкрд╛рда рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ 0 рдорд┐рд▓рддрд╛ рд╣реИред
2) рдЧрддрд┐рд╢реАрд▓
рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреЗрддреА рд╣реИред рдЙрди рд╕рднреА рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
ListModel рдореЗрдВ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реВрдЪреА рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ / рд╣рдЯрд╛рдпрд╛ / рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЙрдирдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ListModel рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдмрди рдЬрд╛рдПрдВрдЧреЗред
рдпрджрд┐ рд╣рдо рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдореЙрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░рд╛ рдЬрд╛рдП:
ListModel { id: dataModel Component.onCompleted: { append({ color: "orange", text: "first" }) append({ color: "skyblue", text: "second" }) } }
рдПрдХ рд╡рд╕реНрддреБ рди рдХреЗрд╡рд▓ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЪрд░ рдХреЛ рдкрд╛рд░ рдХрд░рдХреЗ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИ:
var value = { color: "orange", text: "first" } append(value)
рдЬрдм рдореИрдВрдиреЗ рд╕реНрдереИрддрд┐рдХ рднрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛, рддреЛ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореЙрдбрд▓ рдореЗрдВ рд░рдЦреЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ :) рдЬрдм рд╣рдо рдореЙрдбрд▓ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рд▓реЗрдХрд┐рди рдЫреЛрдЯреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдЖрдЗрдП рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
QtObject { id: obj function alive() { console.log("It's alive!") } } ListModel { id: dataModel Component.onCompleted: { var value value = { data: { color: "orange", text: "first" }, functions: obj } append(value) value = { data: { color: "skyblue", text: "second" }, functions: obj } append(value) } }
рдЪреВрдБрдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдВрдЧ рдФрд░ рдкрд╛рда рдЧреБрдг рд░рдЦреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рд╡реЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рддрд░рд╣ рд╣реЛрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред model.data.colorред
рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЦрд╛рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк QtObject рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рдмрдЪ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рддреЛ рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
Component.onCompleted: model.functions.alive()
рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдбреЗрдЯрд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рди рдЬрд╛рдПрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд╛рд▓рдирд╛ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реАрдзреЗ JML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ QML (XMLHttpRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЖрддрд╛ рд╣реИ (рдФрд░ рдЬрдм рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ), рддреЛ JSON рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдмрд╕ ListModel рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рд╕рднреА рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рд╕реВрдЪреА рддрддреНрд╡реЛрдВ рдореЗрдВ, рднреВрдорд┐рдХрд╛рдПрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдирд┐рдпрдо рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рднреВрдорд┐рдХрд╛рдПрдБ рд╣реЛрдВрдЧреАред рд▓реЗрдХрд┐рди Qt 5 рдиреЗ рднреВрдорд┐рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ListModel рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реЛрд▓ рдЧреБрдг рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
ListModel { id: dataModel dynamicRoles: true Component.onCompleted: { append({ color: "orange", text: "first" }) append({ color: "skyblue", text: 2 }) } }
рдПрдХ рдЖрд╕рд╛рди рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВред рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рди рд╣реИ - рдХреНрдпреВрдЯреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдпрд╣ 4-6 рдЧреБрдирд╛ рдХрдо рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рднреВрдорд┐рдХрд╛ рдкреНрд░рдХрд╛рд░ рдореЙрдбрд▓ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдПрдХ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рди рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдореЙрдбрд▓ рдореЗрдВ рдХреНрдпрд╛ рднреВрдорд┐рдХрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдпрджрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред рдпрджрд┐ рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА, Component.onCompleted рд╣реИрдВрдбрд▓рд░ рдореЗрдВ), рддреЛ рдЕрдВрдд рдореЗрдВ рдореЙрдбрд▓ рдореЗрдВ рд╡реЗ рд╕рднреА рднреВрдорд┐рдХрд╛рдПрдБ рд╣реЛрдВрдЧреА рдЬреЛ рдЗрди рд╕рднреА рддрддреНрд╡реЛрдВ рдореЗрдВ рдереАрдВред
рдЪрд▓реЛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдкрд╛рда рддрддреНрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо "рдирдпрд╛" рдкрд╛рда рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
import QtQuick 2.0 Rectangle { width: 360 height: 360 ListModel { id: dataModel dynamicRoles: true Component.onCompleted: { append({ color: "orange" }) } } Column { anchors.margins: 10 anchors.fill: parent spacing: 10 ListView { id: view width: parent.width height: parent.height - button.height - parent.spacing spacing: 10 model: dataModel clip: true delegate: Rectangle { width: view.width height: 40 color: model.color Text { anchors.centerIn: parent renderType: Text.NativeRendering text: model.text || "old" } } } Rectangle { id: button width: 100 height: 40 anchors.horizontalCenter: parent.horizontalCenter border { color: "black" width: 1 } Text { anchors.centerIn: parent renderType: Text.NativeRendering text: "Add" } MouseArea { anchors.fill: parent onClicked: dataModel.append({ color: "skyblue", text: "new" }) } } } }
рдирддреАрдЬрддрди, рдкрд╛рда рдХреЗ рд╕рднреА рдирдП рддрддреНрд╡ "рдкреБрд░рд╛рдиреЗ" рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рди рд╣реА рд╣реЛрдВрдЧреЗ:
рд╣рдо рдореЙрдбрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рда рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд┐рдирд╛:
ListModel { id: dataModel Component.onCompleted: { append({ color: "orange" }) append({ text: "another old" }) } }
рд╣рдо рдбреЗрд▓рд┐рдЧреЗрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛ рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП:
color: model.color || "lightgray"
рдирддреАрдЬрддрди, рдореЙрдбрд▓ рджреЛрдиреЛрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдирддрд╛ рд╣реИ рдФрд░ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
рд╣рдо рд╕реНрдереИрддрд┐рдХ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдореЙрдбрд▓ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕рдХреА рд╕рднреА рд╕реАрдорд╛рдПрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЫреЛрдЯреА рдЦрдмрд░: Qt 5.1 рдореЗрдВ, рдпрд╣ рдореЙрдбрд▓ QtQuick рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ QtQml.Models рдореЗрдВ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
import QtQml.Models 2.1
рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ QtQuick рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
ListModel рдХреЛ Qt рд╕реЗ рдореЙрдбрд▓ рдХрд╛ QML рд╕рдВрд╕реНрдХрд░рдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреА рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдХреНрд░рд┐рдп рдореЙрдбрд▓ рд╣реИред рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ QML рдореЗрдВ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдШрдЯрдХ рд╣реИред
2. VisualItemModel (ObjectModel)
Qt рдврд╛рдВрдЪреЗ рдХрд╛ рдореЙрдбрд▓-рд╡реНрдпреВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреЛ рдореБрдЦреНрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдореЙрдбрд▓ рдФрд░ рдПрдХ рджреГрд╢реНрдп, рдФрд░ рдПрдХ рд╕рд╣рд╛рдпрдХ, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ред рдЪреВрдБрдХрд┐ рдпрд╣рд╛рдБ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЖрдорддреМрд░ рдкрд░ рд╡рд╣рд╛рдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдШрдЯрдХ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рджреГрд╢реНрдп рд╕реЗ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреИрдпрд╛рд░ рджреГрд╢реНрдп рддрддреНрд╡ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрддреНрд╡реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
VisualItemModel рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдПрдБ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдпрдорд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЙрдбрд▓ рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЙрдбрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдореЙрдбрд▓ рдореЗрдВ рдЖрдпрдд рдФрд░ рдкрд╛рда рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦреЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ:
import QtQuick 2.0 Rectangle { width: 360 height: 240 VisualItemModel { id: itemModel Rectangle { width: view.width height: 100 color: "orange" } Text { width: view.width height: 100 horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering text: "second" } } ListView { id: view anchors.margins: 10 anchors.fill: parent spacing: 10 model: itemModel } }
Qt 5.1 рдореЗрдВ, рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ QtQml.Models рдореЗрдВ QtQuick рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ ObjectModel рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ ListModel рдХреЗ рд╕рд╛рде, рдЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ, рдмрд╕ VisualDataModel рдХреЛ ObjectModel рд╕реЗ рдмрджрд▓реЗрдВред
рдореЙрдбрд▓ VisualDataModel рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рди рдЯреВрдЯреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рддреБрд░рдВрдд рдирдП рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред
3. XmlListModel
рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, XML рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрд░рдПрд╕рдПрд╕, рдПрдХреНрд╕рдПрд╕рдкреАрдПрдл, рд╡рд┐рднрд┐рдиреНрди рдкреЙрдбрдХрд╛рд╕реНрдЯ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред XML рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, XSPF рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧрд╛рдиреЗ рдХреА рдПрдХ рд╕реВрдЪреА) рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореЙрдбрд▓ рдХреЛ рднрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ XML рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рд╣реЛрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпреЗ рдХрд╛рд░реНрдп XmlListModel рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдХреМрди рд╕реА рднреВрдорд┐рдХрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рддрддреНрд╡реЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирджрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо XPath рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ XPath рдЕрдиреБрд░реЛрдз рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред RSS рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдЬреИрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рдЕрдиреБрд░реЛрдз рднреА рд╕рд░рд▓ рд╣реЛрдВрдЧреЗ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ XML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдпрд╣рд╛рдБ XPath рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдБрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬрд╛рдирд╡рд░ рд╣реИ, рддреЛ рдореИрдВ Qt рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд
рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБред рдпрд╣рд╛рдВ рдореИрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рдореБрд╢реНрдХрд┐рд▓ рдЪрдпрди рдХреЛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рд╣реИрдмрд░ рдХреЗ рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдорд┐рд▓реЗрдВрдЧреЗред
Rectangle { width: 360 height: 360 color: "lightsteelblue" XmlListModel { id: dataModel source: "http://habrahabr.ru/rss/hubs/" query: "/rss/channel/item" XmlRole { name: "title" query: "title/string()" } } ListView { id: view anchors.margins: 10 anchors.fill: parent spacing: 10 model: dataModel delegate: Rectangle { width: view.width height: 40 radius: 10 Text { anchors.fill: parent horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight wrapMode: Text.Wrap renderType: Text.NativeRendering text: model.title } } } }
рдЬрд┐рди рддрддреНрд╡реЛрдВ рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡реЗ рдмреНрд▓реЙрдХ рд╣реИрдВ рдЬреЛ рдиреЗрд╕реНрдЯреЗрдб рд╣реИрдВ, рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рд╣реИред рдЗрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ, рд╣рдо рдЕрдкрдиреА рдкрд╣рд▓реА XPath рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдХреА рд╢реАрд░реНрд╖рдХ рд╡рд╛рд▓реА рд╣рдорд╛рд░реА рдХреЗрд╡рд▓ рдПрдХ рднреВрдорд┐рдХрд╛ рд╣реЛрдЧреАред рдЗрд╕реЗ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рддрддреНрд╡ рд╕реЗ рд▓реЗрдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╣рдо рджреВрд╕рд░реА XPath рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдореЙрдбрд▓ рдХреЗ рдЧрдарди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
import QtQuick.XmlListModel 2.0
4. рдлреЛрд▓реНрдбрд░ рд▓рд┐рд╕реНрдЯрдореЙрдбрд▓
рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред QML рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдШрдЯрдХ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ - FileSystemModelред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕реА рдирд╛рдо рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
import Qt.labs.folderlistmodel 1.0
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИ, рдпрд╣ рдХреНрдпреВрдЯреА рд▓реИрдмреНрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдХреНрдпреВрдЯреА рдХреНрд╡рд┐рдХ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрде рдХреЛ URL рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде "рдлрд╝рд╛рдЗрд▓:" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк "qrc:" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ nameFilters рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдХ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЙрдбрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
import QtQuick 2.0 import QtQuick.Controls 1.0 import Qt.labs.folderlistmodel 1.0 Rectangle { width: 600 height: 300 FolderListModel { id: dataModel showDirs: false nameFilters: [ "*.jpg", "*.png" ] folder: "file:///mnt/store/Pictures/Wallpapers" } TableView { id: view anchors.margins: 10 anchors.fill: parent model: dataModel clip: true TableViewColumn { width: 300 title: "Name" role: "fileName" } TableViewColumn { width: 100 title: "Size" role: "fileSize" } TableViewColumn { width: 100 title: "Modified" role: "fileModified" } itemDelegate: Item { Text { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter renderType: Text.NativeRendering text: styleData.value } } } }
рд╣рдо рдореЙрдбрд▓ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ * .jpg рдФрд░ * .png рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: рдкрде, рдирд╛рдо, рдЖрджрд┐ред рд╣рдо рдпрд╣рд╛рдВ рдирд╛рдо, рдЖрдХрд╛рд░ рдФрд░ рд╕рдВрд╢реЛрдзрди рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЗрддрдирд╛ рд░реЛрдорд╛рдВрдЪрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ :) рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╡рд░рдлрд╝реНрд▓реЛ рдЬреИрд╕реА рдЪреАрдЬрд╝ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕реЗ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рддреЛ, CoverFlow рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВред рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЙрдбрд▓ рд▓реЗрдВрдЧреЗред рддрддреНрд╡ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдПрдБ:
property int itemSize: 400
рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрджрд▓реЗрдВ:
delegate: Image { property real rotationAngle: PathView.angle property real rotationOrigin: PathView.origin width: itemSize height: width z: PathView.z fillMode: Image.PreserveAspectFit source: model.filePath transform: Rotation { axis { x: 0; y: 1; z: 0 } angle: rotationAngle origin.x: rotationOrigin } }
рдЦреИрд░, рдЕрдм рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдо рдорд┐рд▓рд╛:
FolderListModel рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдШрдЯрдХ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░, рдЗрд╕рдХреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдЕрднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
5. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓
рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдРрд╕реЗ рдореЙрдбрд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рддрдп рд╣реЛ рдЬрд╛рддреА рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреА рд╣реИред
рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рд╕реВрдЪрд┐рдпрд╛рдБ / рд╕рд░рдгрд┐рдпрд╛рдБ;
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ QML рдШрдЯрдХ
- рдкреВрд░реНрдгрд╛рдВрдХреЛрдВред
1) рд╕реВрдЪреА / рд╕рд░рдгрд┐рдпрд╛рдБ
рдЖрдк рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд░рдгреА рддрддреНрд╡ рдХрд╛ рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓реЗрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
import QtQuick 2.0 Rectangle { property var dataModel: [ { color: "orange" }, { color: "skyblue", text: "second" } ] width: 360 height: 240 ListView { id: view anchors.margins: 10 anchors.fill: parent spacing: 10 model: dataModel delegate: Rectangle { width: view.width height: 100 color: modelData.color Text { anchors.centerIn: parent renderType: Text.NativeRendering text: modelData.text || "empty text" } } } }
рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рддреЛ рдореЙрдбрд▓рдбреИрдЯ рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЧреБрдг рд╣реЛрдВрдЧреЗред рдпрджрд┐ рддрддреНрд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдореВрд▓реНрдп рд╣реИрдВ, рддреЛ рд╡реЗ рдореЙрдбрд▓рдбреИрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
property var dataModel: [ "orange", "skyblue" ]
рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ:
color: modelData
рдФрд░ ListModel рдХреА рддрд░рд╣, рд╣рдо рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ ListModel рдХреЗ рд╕рд╛рде рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╣рдо QtObject рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
property var dataModel: [ { color: "orange", functions: obj }, { color: "skyblue", text: "second", functions: obj } ] QtObject { id: obj function alive() { console.log("It's alive!") } }
рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
Component.onCompleted: modelData.functions.alive()
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ рдФрд░ рдпрд╣ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдЬрдм рдЖрдк рддрддреНрд╡реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рддреЗ / рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рджреГрд╢реНрдп рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╡реЗ рдмрджрд▓ рдЧрдП рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрдпреВрдЯреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрдиреЗ рдкрд░ рдФрд░ рдХреНрдпреВрдПрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рджреГрд╢реНрдп рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдЪрд╛рд▓ рд╣реИ: рд╣рдо рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкреБрд░рд╛рдиреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
dataModel.push({ color: "skyblue", text: "something new" }) dataModel = dataModel
рдпрд╣ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ рдЬреЛ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ / рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗред
реи) рд╡рд╕реНрддреБ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ QML рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╣реЛрдЧрд╛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рднреВрдорд┐рдХрд╛рдПрдБ рд╣реЛрдВрдЧреЗред
рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд░реАрдореЗрдХ рдХрд░реЗрдВ:
property var dataModel: null Component.onCompleted: { dataModel = { color: "orange", text: "some text" } }
рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рд╡рд╕реНрддреБ рдЧреБрдг рдореЙрдбрд▓рдЯрд╛рдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИрдВ:
color: modelData.color
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╣ рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЙрдбрд▓ рднреА рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХрд▓ QML рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдкреВрд░реНрдг QML рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд▓рдЧрднрдЧ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдорд╛рдирддрд╛ рд╣реВрдВред
QML рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдмрджрд▓реЗрдВ:
Item { id: dataModel property color color: "orange" property string text: "some text" }
рдЖрдЗрдЯрдо рдХреЛ рдпрд╣рд╛рдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА QML рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдореЙрдбрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ QtObject рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рдХреНрдпреВрдПрдордПрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЖрдЗрдЯрдо, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдореЙрдбрд▓рдбрд╛рдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛрдиреЛрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореЙрдбрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдХреНрд░рд┐рдп рд╣реИред рдХреНрдпреВрдПрдордПрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рд┐рдЧреНрдирд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдмрджрд▓рддреЗ рд╕рдордп рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рдмрджрд▓рдиреЗ рд╕реЗ рдбреЗрд▓рд┐рдЧреЗрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
3) рдкреВрд░реНрдгрд╛рдВрдХ
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЙрдбрд▓ :) рд╣рдо рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдореЙрдбрд▓ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
property int dataModel: 5
рдпрд╛ рдЖрдк рд╕реАрдзреЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
model: 5
рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдкрд╛рд╕ рдореЙрдбрд▓рдбреЗрдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ рднреА model.index рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдореЙрдбрд▓ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрдИ рд╕рдорд╛рди рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ
рд╣рдордиреЗ рдХреНрдпреВрдПрдордПрд▓ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рд╕реЗ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рд╕реНрдЯрдореЙрдбрд▓ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░рдгрд┐рдпрд╛рдВ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдПрдХ ListModel рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣) рдорд╛рдирд╛ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд╣рдо рд╕рднреА MVC рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди, рдореИрдВ рдПрдХ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдм рдХреБрдЫ QML рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ; рдЖрдкрдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдЫ рдЪреАрдЬреЗрдВ C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН рд╕реА + + - рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред