Qml рдореЗрдВ рдЯреНрд░реА рдореИрдкрд┐рдВрдЧ

рдЫрд╡рд┐
рдПрдХ рдмрд╛рд░, рдореЗрд░реЗ рдПрдХ рджреЛрд╕реНрдд рдиреЗ рдкреВрдЫрд╛: "рдореИрдВ qml рдореЗрдВ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?" рдореИрдВрдиреЗ рд╣рдм рдкрд░ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдореИрдВрдиреЗ рдПрдХ рдЖрдордВрддреНрд░рдг рдХреА рджреЗрдЦрд░реЗрдЦ рдХреА ... рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдЙрд╕реА рд▓реЗрдЦ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ред
рдЙрджреНрджреЗрд╢реНрдп: рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬреЛ Qt рдХреНрд╡рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо GitHub: github.com/1KoT1/QMLPresentTree рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛

рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдЯреНрд░реА рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдЯреНрд░реАрдЗрдЗрдЯреЗрдо рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рд╕рд╛рдордЧреНрд░реА рдЧреБрдг рдХреБрдЫ рддрддреНрд╡ рд╕рд╛рдордЧреНрд░реА рд░рдЦрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрдВрдХреНрддрд┐ рдареАрдХ рд╣реИред
рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдмрд▓реЗрдореЗрдВрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ - рдмрдЪреНрдЪреЗред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
IsOpen рдкреНрд░реЙрдкрд░реНрдЯреА рдЖрдВрддрд░рд┐рдХ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреА рд╕реНрдерд┐рддрд┐ рд░рдЦрддреА рд╣реИ: рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдпрд╛ рдЫрд┐рдкреА рд╣реБрдИред
рд╣реИрд╢рд▓реНрдб рдкреНрд░реЙрдкрд░реНрдЯреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдмрдЪреНрдЪреЗ рд╣реИрдВред рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ! Item.childItems ()ред IsEmpty (), рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣реИрд╢рд▓реНрдб рдлрд╝реАрд▓реНрдб рдХреА рд╢реБрд░реБрдЖрдд рдХреАред
рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдкреЗрдбрд╝ - рдкреМрдзреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред h рдФрд░ treeitem.cpp ред
Model.h рдФрд░ model.cpp рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЧреБрдг рд╣реЛрддрд╛ рд╣реИ - рддрддреНрд╡реЛрдВ рдХрд╛ рдкреЗрдбрд╝ред
Main.cpp рдореЗрдВ, рдореЙрдбрд▓ рдмрдирд╛рдПрдВ, рдореЙрдбрд▓ рдХреЛ qml рдореЗрдВ рджреЗрдЦреЗрдВ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред

Qml рдореЗрдВ рдЯреНрд░реА рдореИрдкрд┐рдВрдЧ

рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рд╣рдо qml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЦреНрдп qml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╣реИ:

import QtQuick 2.0 Rectangle { width: 360 height: 360 ListView{ anchors.fill: parent model: programmModel.tree delegate: ItemView{} } } 


рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╣рдо рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдЯрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдЙрдк-рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред рдЖрджрд┐ рд╡реГрдХреНрд╖ рдХреА рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ред

рд╡рд┐рдВрдбреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ ListView рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИред ListView рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рд╣рдорд╛рд░реЗ рдкреЗрдбрд╝ рдХреЛ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЙрдк-рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди ItemView.qml рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:

 import QtQuick 2.0 Row{ id: itemView Text{ width: 10 height: 10 text: modelData.hasChild? modelData.isOpen ? "-" : "+" : "" MouseArea{ anchors.fill: parent onClicked: modelData.isOpen = !modelData.isOpen; } } Column{ Text{ text: modelData.content } Loader{ source: modelData.isOpen ? "TreeItemsList.qml" : "Empty.qml" } } } 


рдПрдХ рддрддреНрд╡ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИ:

 Text{ text: modelData.content } 


рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛ рдЙрдк-рддрддреНрд╡реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 Text{ width: 10 height: 10 text: modelData.hasChild? modelData.isOpen ? "-" : "+" : "" MouseArea{ anchors.fill: parent onClicked: modelData.isOpen = !modelData.isOpen; } } 


рдШрдмрд░рд╛рд╣рдЯ рдХреА рд╕реВрдЪреА:

 Loader{ source: modelData.isOpen ? "TreeItemsList.qml" : "Empty.qml" } 


рдЙрдк-рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗрд╡рд▓ рддрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рдЦреБрд▓рд╛ рд╣реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдбрд░ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдмрдВрдж рд╣реЛрдиреЗ рдкрд░, Empty.qml рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдХрд╛рд░ 0 рд╕реЗ 0. рдЖрдпрддред рдЙрдк-рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдЦреБрд▓реА рд╕реВрдЪреА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди TreeItemsList.qml рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 import QtQuick 2.0 Column{ Repeater{ model: modelData.childItems delegate: ItemView{} } } 


рд╕реНрддрдВрдн рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реВрдЪреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред ListView рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЙрд▓рдо рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рди рд▓реЗрддрд╛ рд╣реИред рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ListView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдк-рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реА рдбрд▓рдЧреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕реВрдЪреА рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдЕрдкрдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред

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

Source: https://habr.com/ru/post/In197110/


All Articles