7 рдЕрдХреНрдЯреВрдмрд░ 2014 рдХреЛ, Qt-рдореЙрдбреНрдпреВрд▓
QtRemoteObjects рдХреЗ рд╕реНрд░реЛрдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдореЙрдбреНрдпреВрд▓ рдлреЛрд░реНрдб рдореЛрдЯрд░ рдХрдВрдкрдиреА (рд▓реЗрдЦрдХ рдмреНрд░реЗрдЯ рд╕реНрдЯреЙрдЯрд▓рд┐рдорд░) рдХреЗ рдЖрдВрддреЛрдВ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдпрд╣ рдмрд╛рдд рдмрд╣реБрдд рд╣реА рдЖрд╢рд╛рдЬрдирдХ рд╣реИред рдореЙрдбреНрдпреВрд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рд╛рд░ рдЗрд╕рдХреЗ рдкрд┐рдЫрд▓реЗ рдирд╛рдо рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдкреНрд░рддрд┐рдХреГрддрд┐, рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ "рдкреНрд░рддрд┐рдХреГрддрд┐" рд╣реИрдВред

QtRemoteObjects рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░, рдЬреЛ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ / рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ Qt рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддрд┐рдХреГрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рд╕рдВрдХреЗрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде)ред рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рднреА рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдкреНрд░рддрд┐рдХреГрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреБрдг рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рд╕реНрд░реЛрдд рд╕реНрд░реЛрдд рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд╣рд┐рдд) рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, QproRemoteObjects рдХреЗ рдЕрдВрджрд░ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреА рд╕рд╛рд░реА рдЬрдЯрд┐рд▓рддрд╛ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛
1. Qt 5 рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рд╣реИрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░,
qtbase5-private-dev рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛
2. рдореЙрдбреНрдпреВрд▓ рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
git рдХреНрд▓реЛрди
gitorious.org/qtplayground/qtremoteobjects.git3. рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдПрдХ рдЫрд╛рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ QtCreator рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдмрд┐рд▓реНрдб-рдХреНрдпреВрдЯреНрд░реАрдореЛрдЯреЛрдмрдЬреЗрдХреНрдЯреНрд╕-рдХреНрдпреВрдЯреА 5_3_0-рд░рд┐рд▓реАрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдерд╛рдкрди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд░реЗрдк рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ рд╡рд╣ qtremoteobjects / mkspecs / features directory рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ, рдЗрд╕реЗ / usr / lib / x86_64-linux-gnu / qt5 / mkspecs / features рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдм рдХреБрдЫ "рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: libQt5RemoteObjects.so (dll) рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ Qt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ Qt рдореЗрдВ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА / QtRemoteObjects рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдХреНрд░рдорд╢рдГ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдореИрдиреБрдЕрд▓" рдореЛрдб рдореЗрдВ, рдЖрдкрдХреЛ рдмрд┐рди / рд░реЗрдк рдмрд┐рд▓реНрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдмрд╛рдЗрдирд░реА рдХреЛ рдХреНрдпреВрдЯреА рдмрд╛рдпрдиреЗрд░реА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ / usr / lib / x86_64-linux-gnu / qt5 / bin / repc рд╣реИ)ред
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдПрдХ рд╡рд╕реНрддреБ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ - рдПрдХ рд╕реНрд░реЛрдд рдФрд░ рдПрдХ рд╡рд╕реНрддреБ - рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗ - рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдХ рд╕рд░реНрд╡рд░ред рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рда рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ рдЬреБрдбрд╝реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ, рдкреНрд░реЗрд╖рд┐рдд рдкрд╛рда рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рджреЛ рддрд╕реНрд╡реАрд░реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдбред
рд╕рд░реНрд╡рд░
рдЧреНрд░рд╛рд╣рдХ
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдореЛрдЯрдмреЛрдЬ) рдФрд░ 2 рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реЛрдВрдЧреА: рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреАред рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
QT += remoteobjects
.Rep рдлрд╝рд╛рдЗрд▓реЗрдВ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди .rep рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреИрд░реЗрдВрдЯ рдореЗрдВ, рд╣рдо рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ messageSender.rep рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ:
#include <QtCore> class MessageSender { SIGNAL(sendMessage(const QString &message)); };
рдпрд╛рдж рд░рдЦреЗрдВ рдореИрдВрдиреЗ mkspecs / features directory рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛? рдпрд╣ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП
REPC_REPLICA += ../MessageSender.rep
рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП
REPC_SOURCE += ../MessageSender.rep
рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди MessageSender.rep рд╕реЗ рд╣реЗрдб рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП - rep_MessageSender_replica.h #ifndef REP_MESSAGESENDER_REPLICA_H #define REP_MESSAGESENDER_REPLICA_H // This is an autogenerated file. // Do not edit this file, any changes made will be lost the next time it is generated. #include <QObject> #include <QVariantList> #include <QMetaProperty> #include <QRemoteObjectNode> #include <QRemoteObjectReplica> #include <QRemoteObjectPendingReply> #include <QtCore> class MessageSenderReplica : public QRemoteObjectReplica { Q_OBJECT Q_CLASSINFO(QCLASSINFO_REMOTEOBJECT_TYPE, ) friend class QRemoteObjectNode; private: MessageSenderReplica() : QRemoteObjectReplica() {} void initialize() { QVariantList properties; properties.reserve(0); setProperties(properties); } public: virtual ~MessageSenderReplica() {} Q_SIGNALS: void sendMessage(const QString & message); }; #endif // REP_MESSAGESENDER_REPLICA_H
рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП - rep_MessageSender_source.h #ifndef REP_MESSAGESENDER_SOURCE_H #define REP_MESSAGESENDER_SOURCE_H // This is an autogenerated file. // Do not edit this file, any changes made will be lost the next time it is generated. #include <QObject> #include <QVariantList> #include <QMetaProperty> #include <QRemoteObjectNode> #include <qremoteobjectsource.h> #include <QtCore> class MessageSenderSource : public QObject { Q_OBJECT Q_CLASSINFO(QCLASSINFO_REMOTEOBJECT_TYPE, "MessageSender") friend class QRemoteObjectNode; public: MessageSenderSource(QObject *parent = Q_NULLPTR) : QObject(parent) { } public: virtual ~MessageSenderSource() {} Q_SIGNALS: void sendMessage(const QString & message); }; class MessageSenderSimpleSource : public QObject { Q_OBJECT Q_CLASSINFO(QCLASSINFO_REMOTEOBJECT_TYPE, "MessageSender") friend class QRemoteObjectNode; public: MessageSenderSimpleSource(QObject *parent = Q_NULLPTR) : QObject(parent) { } public: virtual ~MessageSenderSimpleSource() {} Q_SIGNALS: void sendMessage(const QString & message); }; template <class ObjectType> struct MessageSenderSourceAPI : public SourceApiMap { MessageSenderSourceAPI() { _properties[0] = 0; _signals[0] = 1; _signals[1] = qtro_signal_index<ObjectType>(&ObjectType::sendMessage, static_cast<void (QObject::*)(QString)>(0),signalArgCount+0,signalArgTypes[0]); _methods[0] = 0; } QString name() const Q_DECL_OVERRIDE { return QStringLiteral("MessageSender"); } int propertyCount() const Q_DECL_OVERRIDE { return _properties[0]; } int signalCount() const Q_DECL_OVERRIDE { return _signals[0]; } int methodCount() const Q_DECL_OVERRIDE { return _methods[0]; } int sourcePropertyIndex(int index) const Q_DECL_OVERRIDE { return _properties[index+1]; } int sourceSignalIndex(int index) const Q_DECL_OVERRIDE { return _signals[index+1]; } int sourceMethodIndex(int index) const Q_DECL_OVERRIDE { return _methods[index+1]; } int signalParameterCount(int index) const Q_DECL_OVERRIDE { return signalArgCount[index]; } int signalParameterType(int sigIndex, int paramIndex) const Q_DECL_OVERRIDE { return signalArgTypes[sigIndex][paramIndex]; } int methodParameterCount(int index) const Q_DECL_OVERRIDE { return methodArgCount[index]; } int methodParameterType(int methodIndex, int paramIndex) const Q_DECL_OVERRIDE { return methodArgTypes[methodIndex][paramIndex]; } int propertyIndexFromSignal(int index) const Q_DECL_OVERRIDE { Q_UNUSED(index); return -1; } const QByteArray signalSignature(int index) const Q_DECL_OVERRIDE { switch (index) { case 0: return QByteArrayLiteral("sendMessage(QString)"); } return QByteArrayLiteral(""); } const QByteArray methodSignature(int index) const Q_DECL_OVERRIDE { Q_UNUSED(index); return QByteArrayLiteral(""); } QMetaMethod::MethodType methodType(int) const Q_DECL_OVERRIDE { return QMetaMethod::Slot; } const QByteArray typeName(int index) const Q_DECL_OVERRIDE { Q_UNUSED(index); return QByteArrayLiteral(""); } int _properties[1]; int _signals[2]; int _methods[1]; int signalArgCount[1]; const int* signalArgTypes[1]; int methodArgCount[0]; const int* methodArgTypes[0]; }; #endif // REP_MESSAGESENDER_SOURCE_H
рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдирдХрд╛ рд╕рд╛рдорд╛рдиред
рдЧреНрд░рд╛рд╣рдХ
рдкрд╣рд▓реЗ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд░рд▓ рд╣реИред
рдЖрдкрдХреЛ рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
QRemoteObjectNode clientNode;
рдФрд░ рдлрд┐рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ (рдпрд╛ рд╕реАрдзреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ) рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
clientNode = QRemoteObjectNode::createNodeConnectedToRegistry(); // QRemoteObjectReplica *sender = m_client.acquire< MessageSenderReplica >(); // connect(sender, SIGNAL(sendMessage(const QString &)), this, SLOT(appendMessage(const QString &))); //
рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрд▓реЙрдЯ рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рд╡рд░рдг рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред
рд╕рд░реНрд╡рд░
рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд▓реЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
class MessageSender : public MessageSenderSource { Q_OBJECT public slots: void postMessage(const QString &message); };
рдЗрд╕ рд╕реНрд▓реЙрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛ред
void MessageSender::postMessage(const QString &message) { emit sendMessage(message); }
рдЕрдм рд╕рд░реНрд╡рд░ рд╡рд░реНрдЧ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
MessageSender *serverSender; // QRemoteObjectNode registryHostNode; // QRemoteObjectNode objectNode; //
рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ (рдпрд╛ рд╕реАрдзреЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ) рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
connect(ui->sendButton, SIGNAL(clicked()), this, SLOT(startSendMessage()))
StartSendMessage () рд╕реНрд▓реЙрдЯ рдореЗрдВ, рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реНрд▓реЙрдЯ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛:
QString messageText = ui->messageTextEdit->text(); serverSender->postMessage(messageText);
рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ: рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯред
рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рд╣реА рд╣реЛрд╕реНрдЯ рдХреЗ рднреАрддрд░ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдиреЛрдбреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдерд╛рдиреАрдп рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдиреЛрдб рдирд┐рд░реНрдорд╛рдг рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
objectNode = QRemoteObjectNode::createHostNode(QUrl("tcp://localhost:9999")); //registryHostNode
рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░
clientNode = QRemoteObjectNode(); clientNode.connect(QUrl("tcp://localhost:9999"));
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдпрд╣ рд▓реЗрдЦ рдЧреБрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЧреБрдгреЛрдВ рдФрд░ рд╕реНрд▓реЙрдЯреНрд╕ (рдЬреЛ рдХрд┐ рд░реЗрдк рдлрд╛рдЗрд▓ рдореЗрдВ рднреА рд╡рд░реНрдгрд┐рдд рд╣реИрдВ) рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрд░реЛрдд рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВредрдХреНрдпреВрдЯреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рджрд┐рдиреЛрдВ 2014 рдЙрддреНрддрд░реА рдЕрдореЗрд░рд┐рдХрд╛ рд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐