рдЬреАрдЖрд░рдкреАрд╕реА рдФрд░ рдкреНрд░реЛрдЯреЛрдмреБрдлрд╝ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдФрд░ рдХреНрдпреВрдЯреА рдЖрд╡рд░рдг



рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореИрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣реИрд░рд╛рди рдерд╛ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрд╛рдлрд╝ рдФрд░ рдЬреАрдЖрд░рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рд░рд▓ рд░реИрдкрд░ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХреНрдпреВрдЯреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИрдВред рдореИрдВ рд╕рд╣рд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдпрд╣рд╛рдБ рд░реИрдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЭреЗ рдореМрдЬреВрджрд╛ C ++ API рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рдЧрд╛ред

рдЬреАрдЖрд░рдкреАрд╕реА рдФрд░ рдкреНрд░реЛрдЯреЛрдмреБрдлрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛


рдЖрдЗрдП рдПрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ: рдЖрдк рдПрдХ рдорд▓реНрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░рдкреАрд╕реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЫрд╛рддреА рдореЗрдВ рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдореИрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдврд╛рдВрдЪрд╛ рд╣реВрдВ", рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдпреБрдЧ рдореЗрдВ рд░рд╣ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рд╣рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЖрд░рдкреАрд╕реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдмрд╕ рдореБрдЭреЗ рдЬреАрдЖрд░рдкреАрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИ рдЗрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

  • рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕реНрдкрд╖реНрдЯ IDL
  • рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐
  • рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХреНрд▓рд╛рдЗрдВрдЯ / рд╕рд░реНрд╡рд░ рдХреЛрдб

рдЯреВ рдж рдкреЙрдЗрдВрдЯ


рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдХреНрдпреВрдЯреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЗрдЯрд╛-рд╕реВрдЪрдирд╛ рдХреА рдорд╛рддреНрд░рд╛ рдЖрдо рддреМрд░ рдкрд░ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдкрд░ рд╣реИ, рдпрд╣ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛, "рд╢реБрджреНрдз" рдХреНрдпреВрдЯреА рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рддреЛ qtprotobufgen рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред

qtprotobufgen


qtprotobufgen рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдЬреЛ рдХрд┐ libprotoc рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ API рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдереЛрдбрд╝рд╛ рдзреЛрдЦрд╛ рдЦрд╛ рд╕рдХрддрд╛ рд╣реВрдВред

  • рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд▓рдЧ рдЗрди рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рд╣реИ :: google :: protobuf :: compiler :: CodeGenerator, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдкрдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рдПрдХ рдЕрд▓рдЧ .proto рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐ рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ
  • рд╡рд░реНрдЪреБрдЕрд▓ GenerateAll рд╡рд┐рдзрд┐ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЧрдИ .proto рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреВрд░реА рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдиреЗ рдкрд░ рдкреАрдврд╝реА рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ
  • рдЖрднрд╛рд╕реА HasGenerateAll рд╡рд┐рдзрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЬреАрд╡рд┐рдд рдЕрд╡рд╢реЗрд╖ рд╣реИред рд╕рдЪ рд▓реМрдЯрд╛ рджреЛ

рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкрд╛рд░реНрд╕рд░ / рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдзрд╛рд░рд╛ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХрд╛ рдЗрд╢реНрдпреВ рдХрд░рддреА рд╣реИ, рдпрд╛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкреНрд░реЛрдЯреЛ-рдлрд╛рдЗрд▓ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрддреА рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рд╕рд╛рдордиреЗ рдЖрдпрд╛: рдкреАрдврд╝реА рдФрд░ рд╕рдВрдХрд▓рди рдХреЛ рдПрдХ рд╕реАрдПрдордХреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ Qt рдореЗрдЯрд╛-рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреАрдврд╝реА рдХрд░рддрд╛ рд╣реИ, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ Q_OBJECT рдореИрдХреНрд░реЛ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг (рд░реАрдб рд╕реЗрдореАрдХ) рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдПрдордУрд╕реА рдЖрдЧреЗ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдЧреЛ (рд▓реИрдВрдЧ) рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕рдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдФрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЬрдирд░реЗрдЯрд░ рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЯреЛрдХреЛрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдзреАрди рд╣реИ, рдФрд░ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреАрдврд╝реА рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

protoc --plugin=protoc-gen-qtprotobuf=<path/to/bin>/qtprotobufgen --qtprotobuf_out=<output_dir> <protofile>.proto [--qtprotobuf_opt=out=<output_dir>] 

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

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдкрдврд╝ рд╕рдХреЗрдВред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ 2 рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ qtprotobuf рдФрд░ qtgrpcред рдирд╛рдореЛрдВ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреВрд░реНрд╡-рдЗрдХрдЯреНрдареЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ cmake рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХреАрдХрд░рдг рд╣реИред

рдЙрддреНрдкрдиреНрди рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ * QML рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ GRPC рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдХреЗ рдЙрдкрдпреЛрдЧ


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

 ... #include <QtProtobufTypes> ... int main(int argc, char *argv[]) { QtProtobuf::registerProtoTypes(); ... //   Qt  } 

рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдкреНрд░реЛрдЯреЛ-рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП qRegisterProtobufType рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 ... qRegisterProtobufType<MyProtoType>(); ... 

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ README рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ gRPC / protobuf рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝реЗрдВ

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП


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

* рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ


рд╡рд░реНрддрдорд╛рди рдореЗрдВ Qt рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣рдорд╛рд░реА рдпрд╛ рд╣рдорд╛рд░реА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рд╡рд░реНрддрдорд╛рди рдХреНрдпреВрдЯреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереЗред рдореБрдЦреНрдп рдПрдХ qml рдХреЛрдб рд╕реЗ рдХреБрдЫ рдореВрд▓ рдкреНрд░реЛрдЯреЛрдмреЛрдлрд╝ рдкреНрд░рдХрд╛рд░ рдХреА рджреБрд░реНрдЧрдорддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЗрдПрдо рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реА 8 рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИред QML рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд┐рдХреНрд╕реНрдб, sint32) рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ред QtNetwork рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рднреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреВрдЯреА рдЯреАрдо рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдареАрдХ рдХрд░ рджреЗрддреА рд╣реИред
QTBUG-77,852
QTBUG-76,303
QTBUG-78,310

рдпреЛрдЬрдирд╛рдУрдВ


рд╕рднреА рд╡рд░реНрддрдорд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдпрд╛ Qt рдХреЛрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдХрд╛рдо рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рд╣реИ:

  1. рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рд▓рд┐рдП .h / .cpp рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХрд▓ рдЬреЛрдбрд╝реА рдореЗрдВ рд╕рдВрдХреНрд░рдордг
  2. рдЬреАрдЖрд░рдкреАрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  3. рдЬреАрдЖрд░рдкреАрд╕реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдЪрдХреНрд░рдг рдПрдкреАрдЖрдИ
  4. рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдФрд░ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рд╡рд┐рддрд░рдг рдФрд░ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг
  5. Qmake рдПрдХреАрдХрд░рдг
  6. рд╕реАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдХреБрдЫ рдмреИрдХрд▓реЙрдЧ рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

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

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреЗрдЦреЗрдВ рдФрд░ рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВред

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


All Articles