рдЧреБрдг Qt рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛



рд╕рдорд╕реНрдпрд╛

Qt рдореЗрдВ, рдПрдХ рдЕрджреНрднреБрдд рдЪреАрдЬ рд╣реИ - Q_PROPERTY, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА QObject рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

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


рддреЛ, рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░" рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрдВрддреНрд░ рд╣реЛрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрд╡рд╛рдж рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Q_PROPERTY рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Q_PROPERTY рдХреЗ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдирдХ рд╡рд┐рдЬреЗрдЯ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде, рдорд╛рдирдХ рд╡рд╛рд▓реЗ (рдХрдо рд╕реЗ рдХрдо рдСрдмреНрдЬреЗрдХреНрдЯрдирд╛рдо) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Q_PROPERTY рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХрднреА-рдХрднреА рдпрд╣ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ); рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ (рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛); GUI рдореЗрдВ Q_PROPERTY рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИ (рдкреНрд░рдпреЛрдЬреНрдп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП)ред

рдпрд╣ рдХрднреА-рдХрднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдорд╛рд▓рд┐рдХ рд╡рд╕реНрддреБ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реЗ рдорд╛рд▓рд┐рдХ рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЙрдкрд╕рдореВрд╣ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд░реНрдгрдп

рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЧреБрдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░, рдореИрдВрдиреЗ рдПрдХ QtnProperty рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ред рдЖрдЧреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдИ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

QtnPropertyCore

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЛ рдореБрдЦреНрдп рд╡рд░реНрдЧреЛрдВ QtnProperty рдФрд░ QtnPropertySet рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, QtnPropertyBool рдпрд╛ QtnPropertyFloat ), рдФрд░ рджреВрд╕рд░рд╛ рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред QtnProperty рдФрд░ QtnPropertySet рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рдЖрдо рдЕрднрд┐рднрд╛рд╡рдХ рд╣реИ, QtnPropertyBase , рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, QObject рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИред QtnPropertyBase рдХреНрд▓рд╛рд╕ рдореЗрдВ, QtnProperty рдФрд░ QtnPropertySet рдХреЗ рдмреАрдЪ рдЬреЛ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рд╡рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ :
  1. QString рдирд╛рдо - рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо (рдСрдмреНрдЬреЗрдХреНрдЯрдирд╛рдо рдХреЗ рд╕рдорд╛рди)
  2. QString рд╡рд┐рд╡рд░рдг - рдПрдХ рдкрд╛рда рд╡рд┐рд╡рд░рдг рдЬрд┐рд╕реЗ QtnPropertyWidget рдХреЗ рдирд┐рдЪрд▓реЗ рдкреИрдирд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  3. qint32 рдЖрдИрдбреА - рд╕рдореВрд╣ рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдкрддреНрддрд┐ рдЖрдИрдбреА (рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо рдореЗрдВ рдмрдЪрдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ)
  4. QtnPropertyState рд╕реНрдерд┐рддрд┐ - рд╕рдВрдкрддреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ (рдЙрджрд╛ред QtnPropertyStateImmutable - рдЧреИрд░-рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐ рдпрд╛ QtnPropertyStateInv рдЕрджреГрд╢реНрдп - рдЕрджреГрд╢реНрдп)
  5. рд▓реЛрдб / рд╕рд╣реЗрдЬреЗрдВ - QDataStream рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реЗрдЬреЗрдВ / рд▓реЛрдб рдХрд░реЗрдВ
  6. fromStr / toStr - рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЛ / QString рдореЗрдВ рдмрджрд▓реЗрдВ
  7. fromVariant / toVariant - рдЧреБрдг рдорд╛рди рдХреЛ / рд╕реЗ QVariant рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ
  8. propertyWillChange - рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рди рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рднреА рд╣реИрдВ - рдирд╛рдо, рд╡рд┐рд╡рд░рдг, рдЖрдИрдбреА, рд░рд╛рдЬреНрдп, рдЖрджрд┐)
  9. PropertyDidChange - рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдордорд┐рдд рд╣реИ)

QtnPropertySet рд╡рд░реНрдЧ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЗ рдХреЗ рдЧреБрдгреЛрдВ рдФрд░ рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ), рджреЛ рд╡рд░реНрдЧ ( QtnPropertyInt рдФрд░ QtnPropertyIntCallback ) рд╣реИрдВред рдкрд╣рд▓рд╛ рд╡рд░реНрдЧ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЙрди рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬреЛ рд╕реАрдзреЗ QtnPropertyCore рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИрдВ:
  1. QtnPropertyBool - рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  2. QtnPropertyInt - рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  3. QtnPropertyUInt - рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  4. QtnPropertyFloat - рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  5. QtnPropertyDouble - рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрдмрд▓ рд╕рдЯреАрдХ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  6. QtnPropertyEnum - рдХрд┐рд╕реА рдПрдиреНрдпреВрдорд░реЗрд╢рди рд╕реЗ рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  7. QtnPropertyEnumFlags - рдЧрдгрди рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  8. QtnPropertyQString - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  9. QtnPropertyQPoint - QPoint рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  10. QtnPropertyQSize - QSize рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  11. QtnPropertyQRect - QRect рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  12. QtnPropertyQFont - QFont рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  13. QtnPropertyQColor - QColor рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рд╕рднреА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧреБрдг ( QtnPropertyInt , QtnPropertyUInt , QtnPropertyFloat , QtnPropertyDouble ) рдХреЗ рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рд╣реИрдВ:
  1. рдорд┐рдирд╡реИрд▓реНрдпреВ рдиреНрдпреВрдирддрдо рдЕрдиреБрдордд рдореВрд▓реНрдп рд╣реИред
  2. maxValue рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдордд рдореВрд▓реНрдп рд╣реИред
  3. stepValue - рдорд╛рди рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдоред

QtnPropertyWidget

рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рджреЛ рд╡рд┐рдЬреЗрдЯ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдбреЗрд▓реАрдЧреЗрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
QtnPropertyView рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдбрд╝ рд╡рд┐рдЬреЗрдЯ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
QtnPropertyWidget рдХреНрд▓рд╛рд╕ рд╕рдордЧреНрд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ QtnPropertyView рдФрд░ QLabel рдХреЗ рдирд┐рдЪрд▓реЗ рдкреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред

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

рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕реЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдРрд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
QtnPropertySet* textProperties = new QtnPropertySet(owner); QtnPropertyBool* enableWrapping = new QtnPropertyBool(textProperties); enableWrapping->setName(tr("enableWrapping")); enableWrapping->setDescription(tr("Enable/disable text wrapping")); enableWrapping->setValue(true); QtnPropertyQColor* textColor = new QtnPropertyQColor(textProperties); textColor->setName(tr("textColor")); textColor->setDescription(tr("Foreground text color")); textColor->setValue(QColor(0, 0, 0)); QtnPropertySet* Tabulation = new QtnPropertySet(textProperties) Tabulation->setName(tr("Tabulation")); Tabulation->setDescription(tr("Tabulation settings")); QtnPropertyBool* replaceWithSpaces = new QtnPropertyBool(Tabulation); replaceWithSpaces->setName(tr("replaceWithSpaces"); replaceWithSpaces->setDescription(tr("Automatically replace tabs with spaces")); replaceWithSpaces->setValue(false); QtnPropertyUInt* tabSize = new QtnPropertyUInt(Tabulation); tabSize->setName(tr("tabSize")); tabSize->setDescription(tr("Number of spaces to be placed.")); tabSize->setState(QtnPropertyStateImmutable); tabSize->setValue(4); tabSize->setMinValue(1); tabSize->setMaxValue(10); //    propertyDidChange auto lambda = [tabSize, replaceWithSpaces](const QtnPropertyBase* changedProperty, const QtnPropertyBase* firedProperty, QtnPropertyChangeReason reason) { //    if (reason & QtnPropertyChangeReasonValue) { if (*replaceWithSpaces) //  tabSize  tabSize->removeState(QtnPropertyStateImmutable); else //  tabSize   tabSize->addState(QtnPropertyStateImmutable); }; QObject::connect(replaceWithSpaces, &QtnProperty::propertyDidChange, lambda); //       replaceWithSpaces ... 

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ рдЧреИрд░-рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рджреЗрдВ), рдПрдХ рдЫреЛрдЯрд╛ рдХреНрдпреВрдЯреАрдПрдирдкреАрдИрдЬреА рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣рд╛рдБ Text.pef рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рд╣реИ:
 property_set Text { Bool enableWrapping { description = "Enable/disable text wrapping"; value = true; } QColor textColor { description = "Foreground text color"; value = QColor(0, 0, 0); } property_set Tabs Tabulation { description = "Tabulation settings"; Bool replaceWithSpaces { description = "Automatically replace tabs with spaces"; value = false; //    delegate ComboBox { //     true labelTrue = "On"; //     false labelFalse = "Off"; } //      replaceWithSpaces.propertyDidChange slot propertyDidChange { tabSize.switchState(QtnPropertyStateImmutable, !replaceWithSpaces); } } UInt tabSize { description = "Number of spaces to be placed."; state = QtnPropertyStateImmutable; value = 4; } } } 

рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░реНрдпрд╛рдкреНрддред QtnPEG рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ: Text.peg.h рдФрд░ Text.peg.cpp, рдЬрд╣рд╛рдВ рджреЛ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрдерд┐рдд рд╣реИрдВред QtnPropertySetText рдФрд░ QtnPropertySetTabs QtnPropertySet рд╕реЗ рдирд┐рдХрд▓реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред
рдЙрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдЙрдк-рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рдгрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП QtnPropertySetText :
  // start children declarations QtnPropertyBool& enableWrapping; QtnPropertyQColor& textColor; QtnPropertySetTabs& Tabulation; // end children declarations 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, C ++ рдХреЛрдб рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЦреЗрддреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 void doSomething(const QtnPropertySetText& textParams, QString& text) { if (textParams.Tabulation.replaceWithSpaces) { QString spaces(QChar::Space, textParams.Tabulation.tabSize); text.replace(QChar::Tabulation, spaces); } } 

рдкрд░рд┐рдгрд╛рдо

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

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


All Articles