рдпрд╣ рдкреЛрд╕реНрдЯ
рдЗрд╕ (
рдЕрдиреБрд╡рд╛рджрд┐рдд ) рд▓реЗрдЦ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ QML рдЗрдВрдЬрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдкрд╣рд▓реЗ QML рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд╛рдЗрдЯ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдмрд╛рдЗрдЯ рдХреЛрдб рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ QML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП C ++ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм QML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рдкрд╛рда рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЬрди C ++ QQuickText рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдХреНрдпреВрдПрдордПрд▓ рдЗрдВрдЬрди рдХрд░рддрд╛ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЖрд╡реЗрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рддрддреНрд╡ рдкреВрд░реА рддрд░рд╣ рд╕реЗ C ++ рдХреЗ рд╕рд╛рде рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ TextInput рддрддреНрд╡ рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ
QQuickTextInput :: keyPressEvent () рдФрд░ QML рдЗрдВрдЬрди рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛, QQuickTextInput :: updatePaintNode () рдЕрдкрдбреЗрдЯред
рд▓реЗрдХрд┐рди рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ QML рдЗрдВрдЬрди рд░рди рдЯрд╛рдЗрдо рдкрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдмрд╛рдЙрдВрдб рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЕрджреНрдпрддрди рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧред рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдорд╛рдЙрд╕рдЕрд░реЗ рдХреЗ рд▓рд┐рдП рдСрдирдХреНрд▓реАрдХреНрдб рд╣реИрдВрдбрд▓рд░ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВред рдЖрдЬ рд╣рдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
import QtQuick 2.0 Rectangle { width: 300 height: 300 color: "lightsteelblue" Text { anchors.centerIn: parent text: "Window Area: " + (parent.width * parent.height) } }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИрдВ:
- рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрдкрддреНрддрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдЬреИрд╕реЗ рдХрд┐ C ++ рдХреНрд▓рд╛рд╕ QQuickRectangle рдХреЗ рдЖрдпрдд рддрддреНрд╡ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП 300 рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, VME рдХреЗрд╡рд▓ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП STORE_DOUBLE рдмрд╛рдпреЛрдЯреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред VME рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди QMetaObject :: metacall (QMetaObject :: WriteProperty, ...) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рдЕрдВрддрддрдГ QQuickRectangle :: SetWidth () рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рджред QML рдЗрдВрдЬрди рдХреЗрд╡рд▓ рдЗрд╕ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдЬреИрд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "рд╡рд┐рдВрдбреЛ рдПрд░рд┐рдпрд╛:" + (рдкреЗрд░реЗрдВрдЯ.рд╡рд┐рд╡реЗрдХ * рдкреИрд░реЗрдВрдЯ.рд╣рд╛рдИрдЯ) рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдпрд╛ рдкреИрд░реЗрдВрдЯ рдХреЛ рд╕реЗрдВрдЯрд░ рдЗрди рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВред рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЬрд╛рджреВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрдм рднреА рдЖрдпрдд рддрддреНрд╡ рдХреА рдКрдВрдЪрд╛рдИ рдпрд╛ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдЕрдкрдиреЗ рдЖрдк рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ, рдЬрд╡рд╛рдм рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░ рдкрдврд╝реЗрдВред
рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдПрдВ
рдпрджрд┐ рд╣рдо QML_COMPILER_DUMP = 1 рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдмрд╛рдЗрдВрдбрд░реНрд╕ STORE_COMPILED_BINDING рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ:
... 9 STORE_COMPILED_BINDING 43 1 0 10 FETCH 19 11 STORE_COMPILED_BINDING 17 0 1 ...
рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЪрд▓рд┐рдП STORE_BINDING рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред QQmlVME :: рд░рди () рдлрд╝рдВрдХреНрд╢рди рдПрдХ QQmlBinding рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ function $text() { return тАЬWindow Area: тАЭ + (parent.width * parent.height) }
рдЬреЛ рдПрдХ JS рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред
рдпрд╣ рд╕рд╣реА рд╣реИ, рд╣рд░ рдмрдВрдзрди рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рднрд╛рдЧ "рдлрд╝рдВрдХреНрд╢рди $ рдЯреЗрдХреНрд╕реНрдЯ ()" рдХреНрдпреВрдПрдордПрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реА 8 , рдЬреЛ рдХрд┐ рдХреНрдпреВрдПрдордПрд▓ рдХрд╛ рдЬреЗрдПрдордПрд▓ рдЗрдВрдЬрди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ v8 :: v8 рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдлрдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реА 8 рдЗрдВрдЬрди, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рдХ рдХреЗ рдХрд╛рд░рдг , рдореВрд▓ рдХреЛрдб рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдмрдирд╛рдП рдЧрдП v8 :: рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдмрдЪрд╛рддрд╛ рд╣реИред
рдХреБрд▓: STORE_BINDING рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ QQmlBinding рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ v8 рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ :: рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд V8 JS рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯред
рдкреНрд░рджрд░реНрд╢рди рдмрдВрдзрди
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдорд╛рд░реЗ рдмрдВрдзрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ V8 рдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмреЙрдбреА рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓рдХреНрд╖реНрдп рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреЙрд▓ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, QQmlVME :: рдкреВрд░реНрдг () рдлрд╝рдВрдХреНрд╢рди рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, QQmlBinding :: рдЕрджреНрдпрддрди () рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЕрджреНрдпрддрди () рд╡рд┐рдзрд┐ рдмрд╕ v8 :: рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реА рдЖрдпрдд рдХреА рдкрд╛рда рд╕рдВрдкрддреНрддрд┐ рдкрд░ рд▓рд┐рдЦрддреА рд╣реИред
рд▓реЗрдХрд┐рди рд╣реЗ, V8 рдЪрд░ рдХреЗ рдЕрд░реНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рд╕реАрдЦрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рд╕реАрдЦрддрд╛ рд╣реИ? рдЙрддреНрддрд░: V8 рдХрд╛ QML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд QObject рдкреНрд░рдХрд╛рд░ рдХреА рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рди рд╣реА рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЬрдм рдХреЛрдИ V8 рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдпрд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рдЕрдЬреНрдЮрд╛рдд рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ QML рдЗрдВрдЬрди рдХреА рдЖрд╡рд░рдг рд╡рд╕реНрддреБ рд╕реЗ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╡рд╕реНрддреБ рдпрд╛ рдЧреБрдг рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ V8 рдореЗрдВ рд╡рд╛рдкрд╕ (рдпрд╛ рдЗрд╕рдХрд╛ рдорд╛рди) рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдбрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ QQuickItem рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ qv8qobjectwrapper.cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░реИрдкрд░ QObject :: qt_metacall (QMetaObject :: ReadProperty, ...) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдмрддрд╛рддрд╛ рд╣реИ ред рд░реИрдкрд░ (рд░реИрдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЛ V8 :: рдлрдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд V8 рдХреЛрдб рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрддреНрдкрдиреНрди рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП GDB рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ ?? ред рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдзреЛрдЦрд╛ рджрд┐рдпрд╛ рдФрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓ рд╕реНрдЯреИрдХреНрд╕ рдХреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛, рдЬреЛ рд▓рд╛рдЗрди рдирдВрдмрд░рд┐рдВрдЧ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рдмрддрд╛рддрд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░: V8 рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╕реНрддреБ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рддрд░рд╣, рдпрд╣ рдПрдХ рд╕рдВрджрд░реНрдн рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрд░реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рддреЛ, рдмрд╛рдзреНрдпрдХрд╛рд░реА V8 :: рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдЪрд▓рд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред V8 рдЗрдВрдЬрди Qt рд╕реЗ рд░реИрдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдЬреНрдЮрд╛рдд рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред V8 :: рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓рдХреНрд╖реНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрджреНрдпрддрди
рдЦреИрд░, рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рда рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓ рдЕрд░реНрде рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛ред рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрдпреВрдПрдордПрд▓ рдЗрдВрдЬрди рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдЖрдпрдд рдХреА рдКрдВрдЪрд╛рдИ рдпрд╛ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рд░реИрдкрд░ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╡реА 8 рдХреЛ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░рд╛ рд░реИрдкрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЙрди рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЬрдм рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рд░реИрдкрд░ рд╕реНрдиреИрдк-рдХреИрдкреНрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ QQmlJavaScriptExpression :: GuardCapture :: CaptureProperty () (QQmlBinding QQmlJavaScriptExpression рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ)ред
рдХреИрдкреНрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрд╕ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЗ NOTIFY рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИред рдЕрдм, рдЬрдм NOTIFY рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рдмрдВрдзрди рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА NOTIFY рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рддрд░реНрдХ рд╕рд░рд▓ рд╣реИ: рдЬрдм Q_PROPERTY рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ NOTIFY рд╕рд┐рдЧреНрдирд▓ рд╣рдореЗрд╢рд╛ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЬрдм рднреА рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдмрджрд▓рддреА рд╣реИ, рддрдм рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ QQuickItem рд╡рд░реНрдЧ рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рд╣реИ:
Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged)
рд╣рдорд╛рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ: рдЬрдм рд╣рдорд╛рд░реА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдХреЗ рджреМрд░рд╛рди рдкрд╣рд▓реА рдмрд╛рд░ рдЪреМрдбрд╝рд╛рдИ рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреИрдкреНрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдЪреМрдбрд╝рд╛рдИ () рд╕рд┐рдЧреНрдирд▓ рдФрд░ рд╣рдорд╛рд░реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓реЙрдиреНрдЪ рд╕реНрд▓реЙрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред рдЕрдм, рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди QQuickItem рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реА () рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдХреЙрд▓ рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реЗрд▓реНрдл рдбрд┐рдлрд╛рдЗрдВрдб рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдореЗрдВ NOTIFY рд╕рд┐рдЧреНрдирд▓ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИ рдФрд░ рдЬрдм рднреА рд╣рдорд╛рд░реА рдкреНрд░реЙрдкрд░реНрдЯреА рдмрджрд▓рддреА рд╣реИ рддреЛ рдЙрд╕реЗ рднреЗрдЬреЗрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрдВрдзрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдмрдВрдзрди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЙрд╕ рд╕рдордп рдПрдХ NOTIFY рд╕рдВрдХреЗрдд рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрдВрдзрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЬрдм рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡рд░рдг рд╡рд╕реНрддреБ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ рдХреИрдкреНрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЗрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ NOTIFY рд╕рд┐рдЧреНрдирд▓ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЬрдм рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ, рддреЛ рдмрдВрдзрди рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдЬ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ QML рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдПрдХ JS рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рд░ рдмрд╛рд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред
рд╣рдорд╛рд░реЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдВрдзрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЖрдЬ рд╣рдордиреЗ рдЬреЛ рдХреБрдЫ рднреА рдЬрд╛рдВрдЪ рдХреА рд╣реИ рд╡рд╣ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдмрдВрдзрди рд╣реИ, рдпрд╛ рдХреНрдпреВрдХреНрдпреВрдПрдордмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХреЙрдкреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧред рд╣рдо рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдирдХреЗ рд░рд╣рд╕реНрдп рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ, рджреЗрдЦрддреЗ рд░рд╣реЗрдВ!