Qt: рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреНрд░рд╛рдЗрдВрдЧ

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


рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


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


рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ (рд╡реЗ рдЪреЗрдХ рдмреЙрдХреНрд╕ рд╣реИрдВ) рдФрд░ рд╕реНрд╡рд┐рдЪ (рд╡реЗ рд░реЗрдбрд┐рдпреЛ рдмрдЯрди рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрд░рд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдХрд╛рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:


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

рдирд┐рд╖реНрдХрд░реНрд╖: рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдПрдХ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдкрд╕рдВрдж рдХрд╛ рдЖрдЯрд╛


рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХреАред рдЙрд╕ рд╕рдордп рдореЗрдВ, рдЬрдм рдореИрдВрдиреЗ рдбреЗрд▓реНрдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЖрдк рдЧрдВрднреАрд░ рдХрдВрдкрдирд┐рдпреЛрдВ рдФрд░ рд╢реМрдХрд┐рдпрд╛ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рджреЛрдиреЛрдВ рд╕реЗ, рдмрд╕ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдШрдЯрдХ рдкрд╛ рд╕рдХрддреЗ рдереЗред рдЗрд╕рд╕реЗ Qt рдХреЛ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред QWT рдореЗрдВ рдХреБрдЫ рддрддреНрд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рд╢реМрдХрд┐рдпрд╛ рддреМрд░ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦрд╛ред рд╢рд╛рдпрдж, рдЕрдЧрд░ рдЖрдк рдЧрд┐рддреБрдм рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╢рд╛рдпрдж рдЦреБрдж рдХреЛ рддреЗрдЬреА рд╕реЗ рдХрд░реВрдВрдЧрд╛ред


рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдШрд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рд╣реА рд╕реБрдЭрд╛рдИ рдЧрдИ рдереА, рд╡рд╣ рдереА рджреЛ рдЗрдореЗрдЬ рдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд▓рд╛рдЗрдЯ рдХреА рдЗрдореЗрдЬреЗрдЬ рдХреЛ рдСрди рдФрд░ рдСрдл рдХрд░рдирд╛ред рдЦрд░рд╛рдм:


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

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


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


рдореИрдВрдиреЗ рдиреЗрдЯ рдкрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓рд╛ рд╕рдмрдХ рд▓рд┐рдпрд╛ рдЬреЛ рд╕рд╛рдордиреЗ рдЖрдпрд╛: "рд╣рдо рдЗрдирдХреИрдкреНрд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдПрдХ рдмрдЯрди рдЦреАрдВрдЪрддреЗ рд╣реИрдВ" рд╕рд╛рдЗрдЯ рд╕реЗ "рдбреНрд░рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕ рдкрд╛рда рдХрд╛ рдмрдЯрди рдПрдХ рдмрдЯрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреА рддрд░рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдорд╕реМрджрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ: Inkscape рдХреЗ рдмрдЬрд╛рдп, Qt рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ред


рдкрдВрдЦ рдкрд░реАрдХреНрд╖рдг


рдореИрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ (рдореИрдВ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ) рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ред рдореИрдВ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ QWidget рдФрд░ RgbLed рдирд╛рдо рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдлреЙрд░реНрдо рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЦрд╛рд▓реА рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рддреА рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдирд┐рд░реНрдмрд╛рдз рд╣реИред


рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА


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


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


рдПрдХ рдЦреАрдВрдЪреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ:


  • рдмрд╛рд╣рд░реА рд░рд┐рдВрдЧ (рдЙрддреНрдХреАрд░реНрдг, рдЙрддреНрддрд▓ рд░рд┐рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛)
  • рдЖрдВрддрд░рд┐рдХ рд╡рд▓рдп (рдЕрдВрджрд░ рдХреА рдУрд░ рдЭреБрдХрд╛ рд╣реБрдЖ)
  • рдПрд▓рдИрдбреА рд▓реИрдВрдк рдЖрд╡рд╛рд╕, "рдЧреНрд▓рд╛рд╕"
  • рдХрд╛рдВрдЪ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдЫрд╛рдпрд╛
  • рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛
  • рдиреАрдЪреЗ рднрдбрд╝рдХрдирд╛

рдХрдВрд╕реЗрдВрдЯреНрд░рд┐рдХ рд╕рд░реНрдХрд▓, рдпрд╛рдиреА рдЪрдХрд╛рдЪреМрдВрдз рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдХреЗрдВрджреНрд░ рдФрд░ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЪрдХрд╛рдЪреМрдВрдз рдХреЗрдВрджреНрд░, рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЪрдХрд╛рдЪреМрдВрдз рдХреЗ рдПрдХреНрд╕ рдХреЗрдВрджреНрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдХреЗ рдПрдХреНрд╕ рдХреЗрдВрджреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИред


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


рдХреЛрдб
private: int height; int width; int minDim; int half; int centerX; int centerY; QRect drawingRect; int outerBorderWidth; int innerBorderWidth; int outerBorderRadius; int innerBorderRadius; int topReflexY; int bottomReflexY; int topReflexWidth; int topReflexHeight; int bottomReflexWidth; int bottomReflexHeight; 

рддрдм рдореИрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдХреЛрдб
 protected: void resizeEvent(QResizeEvent *event); void RgbLed::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); this->height = this->size().height(); this->width = this->size().width(); this->minDim = (height > width) ? width : height; this->half = minDim / 2; this->centerX = width / 2; this->centerY = height / 2; this->outerBorderWidth = minDim / 10; this->innerBorderWidth = minDim / 14; this->outerBorderRadius = half - outerBorderWidth; this->innerBorderRadius = half - (outerBorderWidth + innerBorderWidth); this->topReflexY = centerY - (half - outerBorderWidth - innerBorderWidth) / 2; this->bottomReflexY = centerY + (half - outerBorderWidth - innerBorderWidth) / 2; this->topReflexHeight = half / 5; this->topReflexWidth = half / 3; this->bottomReflexHeight = half / 5; this->bottomReflexWidth = half / 3; drawingRect.setTop((height - minDim) / 2); drawingRect.setLeft((width - minDim) / 2); drawingRect.setHeight(minDim); drawingRect.setWidth(minDim); } 

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


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдореИрдВ рддреБрд░рдВрдд рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред


рдХреЛрдб
  QColor ledColor; QColor lightColor; QColor shadowColor; QColor ringShadowDarkColor; QColor ringShadowMedColor; QColor ringShadowLightColor; QColor topReflexUpColor; QColor topReflexDownColor; QColor bottomReflexCenterColor; QColor bottomReflexSideColor; 

рдирд╛рдореЛрдВ рд╕реЗ рдпрд╣ рд▓рдЧрднрдЧ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпреЗ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреЗ рд░рдВрдЧ, рдЫрд╛рдпрд╛ рдХрд╛ рд╣рд▓реНрдХрд╛ рднрд╛рдЧ, рдЫрд╛рдпрд╛ рдХрд╛ рдХрд╛рд▓рд╛ рднрд╛рдЧ, рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдВрд╕реБрд▓рд░ рдЫрд╛рдпрд╛ рдХреЗ рддреАрди рд░рдВрдЧ рдФрд░ рдЪрдХрд╛рдЪреМрдВрдз рдХреЗ рд░рдВрдЧ рд╣реИрдВред


рд░рдВрдЧ рдЖрд░рдВрднреАрдХреГрдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреА рд╡рд░реНрдХрдкреАрд╕ рдХреЛ рдкреВрд░рдХ рдХрд░реВрдБрдЧрд╛ред


рдХреЛрдб
 RgbLed::RgbLed(QWidget *parent) : QWidget(parent), ledColor(Qt::green), lightColor(QColor(0xE0, 0xE0, 0xE0)), shadowColor(QColor(0x70, 0x70, 0x70)), ringShadowDarkColor(QColor(0x50, 0x50, 0x50, 0xFF)), ringShadowMedColor(QColor(0x50, 0x50, 0x50, 0x20)), ringShadowLightColor(QColor(0xEE, 0xEE, 0xEE, 0x00)), topReflexUpColor(QColor(0xFF, 0xFF, 0xFF, 0xA0)), topReflexDownColor(QColor(0xFF, 0xFF, 0xFF, 0x00)), bottomReflexCenterColor(QColor(0xFF, 0xFF, 0xFF, 0x00)), bottomReflexSideColor(QColor(0xFF, 0xFF, 0xFF, 0x70)) { } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдЬреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдВрдЧреЗред


рдХреЛрдб
 #include <QPainter> #include <QPen> #include <QBrush> #include <QColor> #include <QGradient> 

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


рдбреНрд░рд╛рдЗрдВрдЧ


рдореИрдВ рдПрдХ рдмрдВрдж рдлрд╝рдВрдХреНрд╢рди рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реВрдВ


  void drawLed(const QColor &color); 

рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


  void paintEvent(QPaintEvent *event); 

Redraw рдШрдЯрдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреА, рдЬрд┐рд╕рдореЗрдВ "рдЧреНрд▓рд╛рд╕" рдХрд╛ рд░рдВрдЧ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдХреЛрдб
 void RgbLed::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); this->drawLed(ledColor); } 

рдЕрдм рддрдХред рдФрд░ рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдХреЛрдб
 void RgbLed::drawLed(const QColor &color) { QPainter p(this); QPen pen; pen.setStyle(Qt::NoPen); p.setPen(pen); } 

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


рдлрд┐рд░ рдкрд╣рд▓рд╛ рд╕рд░реНрдХрд▓ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рд╕рдмрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдПрдХ рдмрдбрд╝рд╛ рд╡реГрддреНрдд, рдПрдХ рд░реЗрдбрд┐рдпрд▓ рдврд╛рд▓ рд╕реЗ рднрд░рд╛ рд╣реБрдЖред рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╣рд▓реНрдХрд╛ рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрд┐рдирд╛рд░реЗ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рддрд▓ рдкрд░ рдПрдХ рдЕрдВрдзреЗрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрд┐рдирд╛рд░реЗ рдкрд░ рдирд╣реАрдВ рд╣реИред рдПрдХ рдмреНрд░рд╢ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдмреНрд░рд╢ рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░рдХрд╛рд░ рдПрдХ рд╕рд░реНрдХрд▓ (рдпрд╛рдиреА рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЕрдВрдХрд┐рдд рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд) рдкреЗрдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдРрд╕реЗ рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ


рдХреЛрдб
  QRadialGradient outerRingGradient(QPoint(centerX, centerY - outerBorderRadius - (outerBorderWidth / 2)), minDim - (outerBorderWidth / 2)); outerRingGradient.setColorAt(0, lightColor); outerRingGradient.setColorAt(1, shadowColor); QBrush outerRingBrush(outerRingGradient); p.setBrush(outerRingBrush); p.drawEllipse(this->drawingRect); qDebug() << "draw"; 

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


рдЪрд┐рддреНрд░


рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдмреИрдЪ рдЬреЛрдбрд╝реЗрдВред


рдХреЛрдб
  QRadialGradient innerRingGradient(QPoint(centerX, centerY + innerBorderRadius + (innerBorderWidth / 2)), minDim - (innerBorderWidth / 2)); innerRingGradient.setColorAt(0, lightColor); innerRingGradient.setColorAt(1, shadowColor); QBrush innerRingBrush(innerRingGradient); p.setBrush(innerRingBrush); p.drawEllipse(QPoint(centerX, centerY), outerBorderRadius, outerBorderRadius); 

рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╕рд░реНрдХрд▓, рдХреЗрд╡рд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдЫреЛрдЯрд╛ рдФрд░ рдЙрд▓реНрдЯрд╛ред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


рдЪрд┐рддреНрд░


рддреЛ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЖрдкрдХреЛ рдХрд╛рдВрдЪ рдХреЗ рд░рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рдХреЛрдб
  QColor dark(color.darker(120)); QRadialGradient glassGradient(QPoint(centerX, centerY), innerBorderRadius); glassGradient.setColorAt(0, color); glassGradient.setColorAt(1, dark); QBrush glassBrush(glassGradient); p.setBrush(glassBrush); p.drawEllipse(QPoint(centerX, centerY), innerBorderRadius, innerBorderRadius); 

рдпрд╣рд╛рдВ, рд╕рдВрдЪрд░рд┐рдд рд░рдВрдЧ рд╕реЗ рдЧрд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдврд╛рд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрд╣рд░рд╛ рд╣реИред рдЖрдБрдЦ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдЧреБрдгрд╛рдВрдХ 120ред рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:


рдЪрд┐рддреНрд░


рдХрд╛рдВрдЪ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХреБрдВрдбрд▓рд╛рдХрд╛рд░ рдЫрд╛рдпрд╛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдкрд╛рда рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдФрд░ рдпрдерд╛рд░реНрдерд╡рд╛рдж рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:


рдХреЛрдб
  QRadialGradient shadowGradient(QPoint(centerX, centerY), innerBorderRadius); shadowGradient.setColorAt(0, ringShadowLightColor); shadowGradient.setColorAt(0.85, ringShadowMedColor); shadowGradient.setColorAt(1, ringShadowDarkColor); QBrush shadowBrush(shadowGradient); p.setBrush(shadowBrush); p.drawEllipse(QPoint(centerX, centerY), innerBorderRadius, innerBorderRadius); 

рдПрдХ рддреАрди-рдЪрд░рдг рдврд╛рд▓ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЫрд╛рдпрд╛ рдХрд┐рдирд╛рд░реЗ рддрдХ рдореЛрдЯреА рд╣реЛрддреА рд╣реИ рдФрд░ рдХреЗрдВрджреНрд░ рдХреА рдУрд░ рдореБрдбрд╝ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛:


рдЪрд┐рддреНрд░


рд╣рд╛рдЗрд▓рд╛рдЗрдЯреНрд╕ рдЬреЛрдбрд╝реЗрдВ, рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВред рдКрдкрд░реА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ, рдирд┐рдЪрд▓реЗ (рдФрд░ рд╕рднреА рдЕрдиреНрдп рддрддреНрд╡реЛрдВ) рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд░реИрдЦрд┐рдХ рдврд╛рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░рд╛ рдХрд▓рд╛рдХрд╛рд░ рдРрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкрд╛рда рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рдд рд░рдЦрддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдЪреНрдЪрд╛рдИ рд╣реИ, рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред


рдХреЛрдб
  QLinearGradient topTeflexGradient(QPoint(centerX, (innerBorderWidth + outerBorderWidth)), QPoint(centerX, centerY)); topTeflexGradient.setColorAt(0, topReflexUpColor); topTeflexGradient.setColorAt(1, topReflexDownColor); QBrush topReflexbrush(topTeflexGradient); p.setBrush(topReflexbrush); p.drawEllipse(QPoint(centerX, topReflexY), topReflexWidth, topReflexHeight); QRadialGradient bottomReflexGradient(QPoint(centerX, bottomReflexY + (bottomReflexHeight / 2)), bottomReflexWidth); bottomReflexGradient.setColorAt(0, bottomReflexSideColor); bottomReflexGradient.setColorAt(1, bottomReflexCenterColor); QBrush bottomReflexBrush(bottomReflexGradient); p.setBrush(bottomReflexBrush); p.drawEllipse(QPoint(centerX, bottomReflexY), bottomReflexWidth, bottomReflexHeight); 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрдбреАрдкреАрд╡реА рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд╕рдм рдПрдХ рддреИрдпрд╛рд░ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рд╣реИред


рдЪрд┐рддреНрд░


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


рдиреАрдЪреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред


рдЪрд┐рддреНрд░


рд╢рд░рд╛рд░рдд


рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдлреВрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛


  void mousePressEvent(QMouseEvent *event); 

рдЗрд╕ рддрд░рд╣ рд╕реЗ:


рдХреЛрдб
 void RgbLed::mousePressEvent(QMouseEvent *event) { static int count = 0; if (event->button() == Qt::LeftButton) { switch (count) { case 0: ledColor = Qt::red; count++; break; case 1: ledColor = Qt::green; count++; break; case 2: ledColor = Qt::blue; count++; break; case 3: ledColor = Qt::gray; count++; break; default: ledColor = QColor(220, 30, 200); count = 0; break; } this->repaint(); } QWidget::mousePressEvent(event); } 

рд╣реЗрдбрд░ рдореЗрдВ рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ:


 #include <QMouseEvent> 

рдЕрдм рдШрдЯрдХ рдкрд░ рдПрдХ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рд╕реЗ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛: рджреАрдкрдХ рд╕реЗ рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛, рдЧреНрд░реЗ рдФрд░ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рдХрд╛рд╢ред


рдЙрдкрд╕рдВрд╣рд╛рд░


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


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


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

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


All Articles