рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдкреНрд░рджрд░реНрд╢рди рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЙрди рдШрдЯрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдорд╣рд╛рди рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд░реЛрдЧреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рдмреЛрдирд╕ :)
QML рдореЗрдВ рдореЙрдбрд▓-рджреГрд╢реНрдп:
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рд╢реВрдиреНрдп, рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рдПрдХ: рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рджреГрд╢реНрдп
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рджреЛ: рдХрд╕реНрдЯрдо рджреГрд╢реНрдп
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рддреАрди: QML рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореЙрдбрд▓
- рдореЙрдбрд▓-рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рднрд╛рдЧ рдЪрд╛рд░: рд╕реА ++ рдореЙрдбрд▓
1. рдкрд╛рдерд╡реЗ
рдпрд╣ рдШрдЯрдХ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдкреНрд░рджрд░реНрд╢рдиреЛрдВ рдХреЗ рдПрдХ рд╣реА рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рдЖрдкрдХреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрде рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдзреА рд░реЗрдЦрд╛рдУрдВ, рдШрдЯрддрд╛ рдФрд░ рдЪрд╛рдк рд╕реЗ рдмрдирд╛ рд╣реЛрддрд╛ рд╣реИред рд░рд╛рд╕реНрддрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдкреВрд░реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рд╣рдо рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рддрддреНрд╡ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рдкрд░ рдмрдбрд╝рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд░реАрдм рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЖрдЧреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░рднрд╛рд╕реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддрддреНрд╡реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред
PathView рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЖрдХрд░реНрд╖рдХ рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдХрд╡рд░рдлрд╝реНрд▓реЛ (рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдореЗрдВ рдПрд▓реНрдмрдо рдХрд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк) рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред
1) рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╡рдХреНрд░ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдХреЗ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рджреНрд╡рд┐рдШрд╛рддреА
рдмреЗрдЬрд╝рд┐рдпрд░ рд╡рдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
import QtQuick 2.0 Rectangle { width: 500 height: 200 PathView { id: view anchors.fill: parent model: 30 path: Path { startX: 0 startY: 0 PathQuad { x: view.width y: 0 controlX: view.width / 2 controlY: view.height } } delegate: Rectangle { width: 20 height: 20 color: "orchid" border { color: "black" width: 1 } } } }
рдПрдХ рдкрде рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкрде рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрде рдореЗрдВ рд╡рдХреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрдВрдб рд╣реЛрддрд╛ рд╣реИред
StartX рдФрд░ startY рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдкрде рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд╣ рдЕрдкрдирд╛ рдЕрдВрддрд┐рдо рдЦрдВрдб рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рднреВрдЦрдВрдб, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреИрд░рд╛рдореАрдЯрд░ x рдФрд░ y рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рдХреНрд░ рддреАрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЕрдВрдд рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╕рдордиреНрд╡рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЭреБрдХрдирд╛ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд╡рд╛рдИ рд╣реИрдВред рдкрде рдЦрдВрдб рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рдкрде рд╡рд╕реНрддреБред рд╡рд┐рд╢реЗрд╖ рдЧреБрдг рднреА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрде рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдкрд╕рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдкреЗрдХреНрд╖рдХрдВрдЯреНрд░реЛрд▓реА)ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛:
рдЪреВрдВрдХрд┐ рд╕рднреА рддрддреНрд╡ PathView рдореЗрдВ рд░рдЦреЗ рдЧрдП рд╣реИрдВ, рд╣рдо рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрде рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
2) рдмрдВрдж рд░рд╛рд╕реНрддрд╛
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдорд╛рд░реНрдЧ рдмрдВрдж рдирд╣реАрдВ рд╣реИред рдПрдХ рддрддреНрд╡ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд░рд╛рд╕реНрддрд╛ рдмрдВрдж рдХрд░рдирд╛ рдЬреНрдпрд╛рджрд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдкрд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрдВрдж рд╕рдВрдкрддреНрддрд┐ рднреА рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдмрдВрдж рд╣реИред
рд╣рдо рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВрдЧреЗ рдФрд░ рджреЛ рдмреЗрдЬрд╝рд┐рдпрд░ рдХрд░реНрд╡реНрд╕ (рдкрд╛рдердХреНрд╡рд╛рдб) рд╕реЗ рдПрдХ рдмрдВрдж рд░рд╛рд╕реНрддрд╛ рдмрдирд╛рдПрдВрдЧреЗред
import QtQuick 2.0 Rectangle { width: 400 height: 400 PathView { id: view anchors.fill: parent model: 50 path: Path { startX: view.width / 2 startY: view.height / 2 PathQuad { relativeX: 0 y: view.height controlX: view.width controlY: 0 } PathQuad { relativeX: 0 y: view.height / 2 controlX: 0 controlY: 0 } } delegate: Rectangle { width: 20 height: 20 color: "hotpink" border { color: "black" width: 1 } } } }
рдкрде рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдЦрдВрдб рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдкреВрд░реА рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
рей) рдкрде рддрддреНрд╡
рдорд╛рдирд╛ рд╡рдХреНрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, QtQuick рдореЗрдВ рдХреНрдпреВрдмрд┐рдХ рдмреЗрдЬрд┐рдпрд░ рд╡рдХреНрд░ рд╣реИрдВ - рдЬреЛ рджреНрд╡рд┐рдШрд╛рдд рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ (PathCubic) рдХреЗ рд╕рд╛рде, рдПрдХ рдордирдорд╛рдирд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рдХреНрд░ (PathCurve), рдПрдХ рдЪрд╛рдк рд╣реИ - рдЕрд░реНрдерд╛рдд рдПрдХ рд╕рд░реНрдХрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ (PathArk) рдФрд░ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ (PathLine)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк PathSvg рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SVG рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╡рдХреНрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рд╣реА рдорд╛рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рддрддреНрд╡реЛрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреИрдердкреЗрд░реЗрдВрдЯ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкрде рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддрддреНрд╡ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрде рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдХрд┐рддрдиреЗ рддрддреНрд╡ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрде рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдмрд╛рдж рдПрдХ PathPercent рдСрдмреНрдЬреЗрдХреНрдЯ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕ рдкрде рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП 0.5)ред
рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ:
import QtQuick 2.0 Rectangle { width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathPercent { value: 0.49 } PathLine { x: view.width / 5 * 3 y: view.height / 4 } PathPercent { value: 0.51 } PathCurve { x: view.width / 5 * 4 y: view.height / 2 } PathCurve { x: view.width y: view.height } PathPercent { value: 1 } } delegate: Rectangle { width: 20 height: 20 color: "orchid" border { color: "black" width: 1 } } } }
рд╣рдо рдмреАрдЪ рдореЗрдВ рджреЛ рдЖрд░реНрдХ рдФрд░ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рддрддреНрд╡ рдкрде рдХреЗ рдЪрд░рдо рднрд╛рдЧреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЗрдВрджреНрд░реАрдп рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИ:

рдкрде рдХрд╛ рдПрдХ рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡ PathAttribute рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкрде рдкрд░ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ, рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрд▓рдЧреНрди PathView.name рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
PathAttribute рдЙрд╕ рдкрде рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕реНрдерд┐рдд рд╣реИред рдкрде рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рди рдЬреЛ рджреЛ PathAttribute рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ PathAttribute рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдПрдХ рддрд░рдл рдпрд╣ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢реВрдиреНрдп рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдХреЗрдВрджреНрд░реАрдп рд╡рд╕реНрддреБ рдХреЛ рджреЛ рдмрд╛рд░ рдмрдбрд╝рд╛ рдХрд░реЗрдВ рдФрд░ рд╕рдмрд╕реЗ рдмрд╛рд╣рд░реА рддрддреНрд╡ рдкрд╛рд░рднрд╛рд╕реА рд╣реЛрдВ:
import QtQuick 2.0 Rectangle { property int itemSize: 20 width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathPercent { value: 0.49 } PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathLine { x: view.width / 5 * 3 y: view.height / 4 } PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathPercent { value: 0.51 } PathCurve { x: view.width / 5 * 4 y: view.height / 2 } PathCurve { x: view.width y: view.height } PathPercent { value: 1 } PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } } delegate: Rectangle { width: PathView.size height: PathView.size color: "orchid" opacity: PathView.opacity border { color: "black" width: 1 } } } }
рдФрд░ рд╣рдореЗрдВ рдРрд╕реЗ рддрддреНрд╡ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЖрдХрд╛рд░ рдФрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ:

рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдЪрд┐рдХрдиреА рд╕рдВрдХреНрд░рдордг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмрд╕ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкрде рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рднрд╛рдЧ рдХреЛ PathView рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдШреЗрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрд╕рдиреНрди рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╢реВрдиреНрдп-рд▓рдВрдмрд╛рдИ рдкрде рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрднрд╛рдЧ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдПрдХ рдорд╛рди рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдХреНрд░рдордг рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╢реВрдиреНрдп рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг, рд╡рд╣рд╛рдБ рдХреЛрдИ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрде рдХреЗ рддреАрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ PathAttribute рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрди рднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ PathLine рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╢реВрдиреНрдп рд▓рдВрдмрд╛рдИ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
import QtQuick 2.0 Rectangle { property int itemSize: 20 width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathPercent { value: 0.49 } PathLine { relativeX: 0; relativeY: 0 }
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдЫреЛрдЯреЗ рдкрд╛рд░рднрд╛рд╕реА рддрддреНрд╡ рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рдЕрдкрд╛рд░рджрд░реНрд╢реА рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ:
4) рдХрд╡рд░рдлреНрд▓реЛ
рдЕрдиреБрднрд╛рдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рдХрд╡рд░рдлрд╝реНрд▓реЛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдЗрд╕ рдЬрдЧрд╣ рддрдХ рдкрдврд╝ рдЪреБрдХреЗ рд╣реИрдВ, рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг :)
import QtQuick 2.0 Rectangle { property int itemAngle: 60 property int itemSize: 300 width: 1200 height: 400 ListModel { id: dataModel ListElement { color: "orange" text: "first" } ListElement { color: "lightgreen" text: "second" } ListElement { color: "orchid" text: "third" } ListElement { color: "tomato" text: "fourth" } ListElement { color: "skyblue" text: "fifth" } ListElement { color: "hotpink" text: "sixth" } ListElement { color: "darkseagreen" text: "seventh" } } PathView { id: view anchors.fill: parent model: dataModel pathItemCount: 6 path: Path { startX: 0 startY: height / 2 PathPercent { value: 0.0 } PathAttribute { name: "z"; value: 0 } PathAttribute { name: "angle"; value: itemAngle } PathAttribute { name: "origin"; value: 0 } PathLine { x: (view.width - itemSize) / 2 y: view.height / 2 } PathAttribute { name: "angle"; value: itemAngle } PathAttribute { name: "origin"; value: 0 } PathPercent { value: 0.49 } PathAttribute { name: "z"; value: 10 } PathLine { relativeX: 0; relativeY: 0 } PathAttribute { name: "angle"; value: 0 } PathLine { x: (view.width - itemSize) / 2 + itemSize y: view.height / 2 } PathAttribute { name: "angle"; value: 0 } PathPercent { value: 0.51 } PathLine { relativeX: 0; relativeY: 0 } PathAttribute { name: "z"; value: 10 } PathAttribute { name: "angle"; value: -itemAngle } PathAttribute { name: "origin"; value: itemSize } PathLine { x: view.width y: view.height / 2 } PathPercent { value: 1 } PathAttribute { name: "z"; value: 0 } PathAttribute { name: "angle"; value: -itemAngle } PathAttribute { name: "origin"; value: itemSize } } delegate: Rectangle { property real rotationAngle: PathView.angle property real rotationOrigin: PathView.origin width: itemSize height: width z: PathView.z color: model.color border { color: "black" width: 1 } transform: Rotation { axis { x: 0; y: 1; z: 0 } angle: rotationAngle origin.x: rotationOrigin } Text { anchors.centerIn: parent font.pointSize: 32 text: model.text } } } }
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдФрд░ рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рд╛:
рд╣рдо рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдИ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЗрдВрджреНрд░реАрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдШреБрдорд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реЛрдЯреЗрд╢рди рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░реЛрдЯреЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдХреНрд╖ рдЧреБрдг рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП 1 рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдШреВрдореЗрдЧрд╛ред
рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ: рд░реЛрдЯреЗрд╢рди рдХреЛрдг, рдЬреЗрдб рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рди рдФрд░ рдореЛрдбрд╝ (рдореВрд▓)ред рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЬреЛ рддрддреНрд╡ рдмрд╛рдИрдВ рдУрд░ рд╣реИрдВ рд╡реЗ 60 рдбрд┐рдЧреНрд░реА рддрдХ рдШреВрдорддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рдкрд░ рдХреНрд░рдорд╢рдГ -60ред рд▓реЗрдХрд┐рди рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
Z рд╕рдордиреНрд╡рдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рддрддреНрд╡ "рдКрдкрд░" рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд рдЬрдм рджреЛ рд╡рд╕реНрддреБрдПрдВ рдХрд┐рд╕реА рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреА рд╣реИрдВ, рддреЛ Z рд╕реЗ рдХрдо рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХреЛ Z рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордиреНрд╡рдп рдХрд░рддреА рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PathView рдореЗрдВ, рдПрдХ рдмрдбрд╝реЗ рдЗрдВрдбреЗрдХреНрд╕ рд╡рд╛рд▓рд╛ рдПрдХ рддрддреНрд╡ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рдХрд╡рд░рдлреНрд▓реЛ рдореЗрдВ, рдмрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: "рдЙрдЪреНрдЪ" рд╡реЗ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдХреЗрдВрджреНрд░ рдХреЗ рдХрд░реАрдм рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдЦрд┐рд░реА рддрддреНрд╡ рддрдкрд╕реНрдпрд╛ рдкрд░ рдлрд┐рдЯ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдХреЗ рддрддреНрд╡ рдкрд░ рд╣реЛрдЧрд╛, рдЖрджрд┐ред рдЗрд╕рд▓рд┐рдП, рд╣рдо Z рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЗрдВрджреНрд░ рд╕реЗ рддрддреНрд╡ рдЖрдЧреЗ, "рдХрдо" рд╣реЛред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдХрд╛рд░ рдРрд╕реЗ рд╣реИрдВ рдХрд┐ рддрддреНрд╡ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЦрд┐рдбрд╝рдХреА рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдУрд╡рд░рд▓реИрдк рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЕрдВрдд рдореЗрдВ, рдореЛрдбрд╝ред рд╣рдо рдЕрдкрдиреА рдЖрдпрдд рдкрд░ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛рд╡ рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╣реИ, рдЕрд░реНрдерд╛рддред рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ (0, 0)ред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдо Y рдЕрдХреНрд╖ рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рддрддреНрд╡ рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ, рддреЛ Y рд╕рдордиреНрд╡рдп рд╕реНрд╡рдпрдВ рдпрд╣рд╛рдБ рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХреНрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдмрд╛рдИрдВ рдУрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕ рд╕рдордиреНрд╡рдп рдХреЛ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрддреНрд╡ рдХреЛ рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рджрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдиреЗрддреНрд░рд╣реАрди рдЖрдЧреЗ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рджрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ "рд╕реНрд╡рдпрдВ рд╕реЗ", рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡реЛрдВ - "рдЕрдкрдиреЗ рдЖрдк" рдХреА рдУрд░ рдШреБрдорд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдмрд╛рдпрд╛рдБ рдХрд┐рдирд╛рд░рд╛ рдХрд░реАрдм рд╣реЛрдЧрд╛, рдФрд░ рджрд╛рдпрд╛рдБ рднрд╛рдЧ рднреА рдирдЬрд╝рджреАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рджрд╛рдпрд╛рдБ рднрд╛рдЧ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдмрд╛рдИрдВ рдУрд░ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдХреЗ рд╣реЛрдВрдЧреЗ, рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ "рдЦреБрдж рд╕реЗ" рдШреБрдорд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рджрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╣рдо рдзреБрд░реА рдмрд┐рдВрджреБ рдХреЛ рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рджрд╛рд╣рд┐рдиреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдореЗрдВред
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, PathView рдиреЗ рдореЙрдбрд▓ рд╕реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред рдПрдХ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ pathItemCount рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдорд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫрд╣ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреВрдПрдордПрд▓ рдХреА рдорджрдж рд╕реЗ, рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХрд╛ рдХрд╡рд░рдлреНрд▓реЛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢
PathView рдПрдХ рдШрдЯрдХ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЖрдХрд░реНрд╖рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛рдкрди рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рддрддреНрд╡реЛрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкрде рдкрд░ рднреА, рдФрд░ рд╕рд╛рде рд╣реА рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрде рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рд╕реНрдерд┐рдд рд╣реИред
2. рдЖрдкрдХрд╛ рд╕рдмрдорд┐рд╢рди
QML рд╣рдореЗрдВ рдЕрдкрдиреА рдкреНрд░рд╕реНрддреБрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдШрдЯрдХ - рд░рд┐рдкреАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ, рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдЖрджрд┐ред рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ * рдШрдЯрдХ рджреЗрдЦреЗрдВ: рд╣рдо рдЗрд╕реЗ рдПрдХ рдореЙрдбрд▓ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдореЙрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдЧрд╛ред
рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реЛ рдФрд░ рдХреЙрд▓рдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд░рд┐рдкреАрдЯрд░ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВред рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рддрддреНрд╡ рдЗрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрдЪреНрдЪреЗ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрдВрдХреНрддрд┐ рдпрд╛ рд╕реНрддрдВрдн, рдЬреЛ рдЕрдкрдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдПрдХ рдкрдВрдХреНрддрд┐ рдпрд╛ рд╕реНрддрдВрдн рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдХреЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдХрд╛рдо рдмрд╛рдХреА рд╣реИред рдпрджрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рддрддреНрд╡ рд╣реЛрдВрдЧреЗ рдХрд┐ рд╡реЗ рд╕рднреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рддреЛ рд╣рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рддрддреНрд╡реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдлреНрд▓рд┐рдХреЗрдмрд▓ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЯрдЪ рд╕реНрдХреНрд░реАрди рдпрд╛ рдЙрд╕реА рдорд╛рдЙрд╕ рдХреЗ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдФрд░ рдЬреЗрд╕реНрдЪрд░ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрддреНрд╡реЛрдВ рдХреЛ рд▓рдВрдмрд╡рдд рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ:
import QtQuick 2.0 Rectangle { width: 360 height: 360 ListModel { id: dataModel ListElement { color: "orange" text: "first" } ListElement { color: "lightgreen" text: "second" } ListElement { color: "orchid" text: "third" } ListElement { color: "tomato" text: "fourth" } } Flickable { anchors.fill: parent contentWidth: row.width Row { id: row height: parent.height Repeater { model: dataModel delegate: Item { height: parent.height width: 100 Rectangle { anchors.margins: 5 anchors.fill: parent color: model.color border { color: "black" width: 1 } Text { anchors.centerIn: parent renderType: Text.NativeRendering text: model.text } } } } } } }
рд╣рдо рдкрдВрдХреНрддрд┐ рддрддреНрд╡ рдХреА рдКрдВрдЪрд╛рдИ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рдХреБрд▓ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдлрд╝реНрд▓реАрдХреЗрдмрд▓ рдкрд░ рд╣рдо рдХрдВрдЯреЗрдВрдЯрд╡рд┐рдж рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЪреМрдбрд╝рд╛рдИред рдпрджрд┐ рдпрд╣ рдлреНрд▓рд┐рдХреЗрдмрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЕрдВрддрд┐рдо рддрддреНрд╡ рдмрд╕ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, QtQuick рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд░рд▓ рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдорд╛рдирдХ рдШрдЯрдХ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: рд╕рд╛рд░рдгреА рд╕реЗ рддрддреНрд╡реЛрдВ рддрдХ рдПрдХ рдордирдорд╛рдирд╛ рдорд╛рд░реНрдЧред рддреИрдпрд╛рд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рдШрдЯрдХреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдерд╡реНрдпреВ рдХреЛ рдПрдХ рд╕реБрдВрджрд░ рд╕реНрд╡рд░реВрдк рдФрд░ рдПрдиреАрдореЗрд╢рди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рдкрде рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддрддреНрд╡ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдкрде рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдШрдирддреНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред