рдПрдХ рдЙрджрд╛рд╣рд░рдг рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ Qt рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╢реИрд▓реА рдмрдирд╛рдПрдБ

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

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ


рддреЛ, рдЪрд▓реЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред Qt рдореЗрдВ, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ QStyle рд╣реИ , рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡реЗрджрди рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рдЗрд╕реЗ ( QWindowStyle , QMacStyle , рдЖрджрд┐) рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ, рдЬреЛ рдРрд╕реА рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдирдХ рд╕реНрд╡рд░реВрдк рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреА рд╣реИрдВред рд╣рдо рдЙрдирдХреА рдЫрд╡рд┐ рдФрд░ рд╕рдорд╛рдирддрд╛ рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рд╢реИрд▓реА рдмрдирд╛рдПрдВрдЧреЗред Qt рдХреЛ рдХрд╕реНрдЯрдо рд╕реНрдЯрд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ QStyle рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдЪреБрдирдиреЗ рдФрд░ рдЗрд╕реЗ "рдЖрдкрдХреЗ рд▓рд┐рдП" рдмрджрд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ QStyle , рдХреНрд▓рд╛рд╕ QCommonStyle рд╕реЗ рдХрдо рд╕рд╛рд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рд▓реЗрдВрдЧреЗ ред

рддреЛ рдЖрдк рдПрдХ рд╢реИрд▓реА рдХреЗ рдЕрдВрджрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? QStyle рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЬрд┐рдирдХреЗ рдирд╛рдо рд╢рдмреНрдж рдбреНрд░рд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ:



рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдкрдирд╛ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд░рддрд╛ рд╣реИред

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


drawControl () рдмрдЯрди рдФрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреА рддрд░рд╣ рдорд╛рдирдХ рд╡рд┐рдЧреЗрдЯреНрд╕ рдЦреАрдВрдЪрддрд╛ рд╣реИред

drawPrimitive () рддрдерд╛рдХрдерд┐рдд рдЖрджрд┐рдо рддрддреНрд╡реЛрдВ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реНрд░реЗрдоред

drawItemPixmap () рдФрд░ drawItemText () рдореЗрдВ рдХрд╛рдлреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо рд╣реИрдВ рдФрд░ рдареАрдХ рд╡рд╣реА рдХрд░реЗрдВ рдЬреЛ рдЖрдк рдЙрдирд╕реЗ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг, рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рддрд░реНрдХ, рдХреНрдпреВрдЯреА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо QTableWidget рддрддреНрд╡ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рдмрд╛рдХреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпрд╛рдБ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдирдпрд╛ C ++ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╕рдордп, Qt рд╣рдореЗрдВ рдЕрдкрдирд╛ рдирд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рднреА рдмрддрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╕реЗ рд╣рдо рд╡рд╛рд░рд┐рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдирд╛рдо рджреЗрдВ MyStyle , рдФрд░ QCommonStyle рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, Qt рд╣рдорд╛рд░реЗ рд▓рд┐рдП (.h рдФрд░ .cpp) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

myStyle.h
#include <QCommonStyle> class myStyle : public QCommonStyle { Q_OBJECT public: explicit myStyle(); signals: public slots: }; 

myStyle.cpp
 #include "mystyle.h" myStyle::myStyle() : QCommonStyle() { } 



рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 int main(int argc, char *argv[]) { QApplication::setStyle( new myStyle ); QApplication a(argc, argv); QTableWidget w(4,3); w.setGeometry(QRect(0,0,300,250)); w.show(); return a.exec(); } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╣рдорд╛рд░реА рд╢реИрд▓реА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рд╢реИрд▓реА рд╣реИ рдЬреЛ QCOMonStyle рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ ... рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╣реЗрдВрдЧреЗ, рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд╣реИ:



рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред


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

рддреЛ, рдЗрд╕ рдЬреНрдЮрд╛рди рд╕реЗ рд▓реИрд╕, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
 void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const; void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const; void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const; 


рдЪрд▓реЛ drawControl () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 switch(element) { default: QCommonStyle::drawControl(element, opt, p, w); break; } 


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

рдЖрдЗрдП рдЙрд╕ рдлреНрд░реЗрдо рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рд╣рдорд╛рд░реА рдкреВрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдШреЗрд░реЗ рд╣реБрдП рд╣реИред рдореИрдВ рдПрдХ рдврд╛рд▓ рдмрдирд╛рдКрдВрдЧрд╛ред рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реА рд╕реАрдорд╛рдПрдВ рд╕рдлреЗрдж рд╣реЛрдВрдЧреА, рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реАрдорд╛рдПрдВ рдПрдХ рдврд╛рд▓ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪреА рдЬрд╛рдПрдВрдЧреА: рд╡реЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╕рдлреЗрдж рдФрд░ рдмреАрдЪ рдореЗрдВ рд╣рд▓реНрдХреЗ рднреВрд░реЗ рд░рдВрдЧ рдХреЗ рд╣реЛрдВрдЧреЗред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, drawControl () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 case CE_ShapedFrame: { //  QLinearGradient gradient(0, 0, 0, opt->rect.height()); gradient.setColorAt(0, QColor(255,255,255)); gradient.setColorAt(0.5, QColor(225,225,225)); gradient.setColorAt(1, QColor(255,255,255)); QPen pen; pen.setBrush( gradient ); p->setPen(pen); //  p->drawRect( 0,0,opt->rect.width()-1, opt->rect.height()-1); } break; 


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

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдкреЗрди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдврд╛рд▓ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреВрдЯреА рдореЗрдВ рдХрд▓рдо рдПрдХ рдмреНрд░рд╢ ( рдХреНрдпреВрдмреНрд░рд╢ ) рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдврд╛рд▓ рд╣реЛрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, drawRect () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдкрдирд╛ рдлреНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ ред


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

 case CE_HeaderEmptyArea: p->fillRect( opt->rect, QBrush( QColor( 233, 233, 233 ) ) ); break; 


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

рддреЛ, рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 case CE_HeaderSection: { //  if( opt->state & State_Sunken || opt->state & State_On ) { //    p->fillRect(opt->rect, QBrush( QColor(255,170,80) )); p->setPen( QPen( QColor( 170,170,170) ) ); //   p->drawRect(opt->rect.x(), opt->rect.y(),opt->rect.width()-1,opt->rect.height()-1); } else//  { //    QLinearGradient gradient(0, 0, 0, opt->rect.height()); gradient.setSpread(QGradient::PadSpread); gradient.setColorAt(0, QColor(255,255,255)); gradient.setColorAt(1, QColor(220,220,220)); //  p->fillRect(opt->rect, QBrush( gradient )); //     gradient.setColorAt(0, QColor(230,230,230)); gradient.setColorAt(0.5, QColor(175,175,175)); gradient.setColorAt(1, QColor(230,230,230)); QPen pen; pen.setStyle(Qt::SolidLine); pen.setBrush(gradient); p->setPen(pen); //   p->drawLine( opt->rect.width() + opt->rect.x() - 1, opt->rect.y() + 3, opt->rect.width() + opt->rect.x() - 1, opt->rect.height() + opt->rect.y() - 3 ); } } 


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

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


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

CE_ItemViewItem рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 case CE_ItemViewItem: { //  ,       drawPrimitive(PE_PanelItemViewItem, opt, p, w); //       //    ,      . const QStyleOptionViewItemV4 * option = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt); if( !option ) { //  -    ,     QCommonStyle::drawControl(element, opt, p, w); return; } //       . if (option->state & QStyle::State_HasFocus) { QPen pen(QColor( 170,170,170 )); p->save(); p->setPen(pen); p->drawRect(opt->rect.x(), opt->rect.y(), opt->rect.width()-1, opt->rect.height()-1); p->restore(); } //  ,      QRect textRect = subElementRect(SE_ItemViewItemText, option, w); // ,    ""    textRect.setX( textRect.x() + 5 ); textRect.setY( textRect.y() + 5 ); if( !option->text.isEmpty() ) { // . p->drawText(textRect, option->text); } } 


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

рдпрджрд┐ рд╣рдо рдЬреЛ рд╕реЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрд╕рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 if (option->state & QStyle::State_HasFocus) 
рдлрд┐рд░ рд╣рдо рдкреВрд░реЗ рд╕реЗрд▓ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЧреНрд░реЗ рдлреНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЗрдВрдбреЗрдВрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкрд╛рда рдКрдкрд░реА рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдХрд░реАрдм рди рджрд┐рдЦрд╛рдИ рджреЗред рдЕрдВрдд рдореЗрдВ, рд╣рдо рдбреНрд░рд╛рдЯрдХреНрд╕реНрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред


рдЪреВрдВрдХрд┐, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо PE_PanelItemViewItem рддрддреНрд╡ рдХреЗ рд▓рд┐рдП drawPrimitive рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЪрдпрдирд┐рдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдХреБрдЫ рдФрд░ рд╕реБрдЦрдж рд░рдВрдЧ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

DrawControl () рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рдХрд░рдХреЗ, drawPrimitive () рдореЗрдВ рдареАрдХ рдЙрд╕реА рд╕реНрд╡рд┐рдЪ рдХреЛ рдЬреЛрдбрд╝реЗрдВ , рдФрд░ рддреБрд░рдВрдд рдЙрд╕ рд╕реЗрд▓ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 switch( pe ) { case PE_PanelItemViewItem: //  ,    ,   . if (const QStyleOptionViewItemV4 *option = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt)) if (option->state & QStyle::State_Selected) { p->fillRect(option->rect, QBrush( QColor( 220,220,220,100 ))); } break; default: QCommonStyle::drawPrimitive( pe, opt, p, w); break; } 


рдЕрдВрдд рдореЗрдВ, рд╡рд╣ рдлрд╝реЙрдиреНрдЯ рдмрджрд▓реЗрдВ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ addItemText () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 painter->setPen( QPen( QColor( 30, 30, 30 ))); painter->setFont(QFont("Consolas")); painter->drawText(rect, text); 


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕рд╛рджреЗ рдЯрд╛рдЗрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдерд╛ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ



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

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

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

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд░реЛрдд:

myStyle.h
 #ifndef MYSTYLE_H #define MYSTYLE_H #include <QCommonStyle> #include <QtGui> class myStyle : public QCommonStyle { Q_OBJECT public: explicit myStyle(); void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const; void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const; void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const; signals: public slots: }; #endif // MYSTYLE_H 

myStyle.cpp
 #include "mystyle.h" myStyle::myStyle() : QCommonStyle() { } void myStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const { switch( element ) { case CE_ShapedFrame: { QLinearGradient gradient(0, 0, 0, opt->rect.height()); gradient.setColorAt(0, QColor(255,255,255)); gradient.setColorAt(0.5, QColor(225,225,225)); gradient.setColorAt(1, QColor(255,255,255)); QPen pen; pen.setBrush( gradient ); p->setPen(pen); p->drawRect( 0,0,opt->rect.width()-1, opt->rect.height()-1); } break; case CE_ItemViewItem: { drawPrimitive(PE_PanelItemViewItem, opt, p, w); const QStyleOptionViewItemV4 * option = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt); if( !option ) { QCommonStyle::drawControl(element, opt, p, w); return; } if (option->state & QStyle::State_HasFocus) { QPen pen(QColor( 170,170,170 )); p->save(); p->setPen(pen); p->drawRect(opt->rect.x(), opt->rect.y(), opt->rect.width()-1, opt->rect.height()-1); p->restore(); } QRect textRect = subElementRect(SE_ItemViewItemText, option, w); textRect.setX( textRect.x() + 5 ); textRect.setY( textRect.y() + 5 ); if( !option->text.isEmpty() ) { p->drawText(textRect, option->text); } } break; case CE_Header: QCommonStyle::drawControl(element, opt, p, w); break; case CE_HeaderEmptyArea: p->fillRect( opt->rect, QBrush( QColor( 233, 233, 233 ) ) ); break; case CE_HeaderSection: { if( opt->state & State_Sunken || opt->state & State_On ) { p->fillRect(opt->rect, QBrush( QColor(255,170,80) )); p->save(); p->setPen( QPen( QColor( 170,170,170) ) ); p->drawRect(opt->rect.x(), opt->rect.y(),opt->rect.width()-1,opt->rect.height()-1); p->restore(); } else { QLinearGradient gradient(0, 0, 0, opt->rect.height()); gradient.setSpread(QGradient::PadSpread); gradient.setColorAt(0, QColor(255,255,255)); gradient.setColorAt(1, QColor(220,220,220)); p->fillRect(opt->rect, QBrush( gradient )); gradient.setColorAt(0, QColor(230,230,230)); gradient.setColorAt(0.5, QColor(175,175,175)); gradient.setColorAt(1, QColor(230,230,230)); QPen pen; pen.setStyle(Qt::SolidLine); pen.setBrush(gradient); p->setPen(pen); p->drawLine( opt->rect.width() + opt->rect.x() - 1, opt->rect.y() + 3, opt->rect.width() + opt->rect.x() - 1, opt->rect.height() + opt->rect.y() - 3 ); } } break; default: QCommonStyle::drawControl(element, opt, p, w); break; } } void myStyle::drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const { painter->setPen( QPen( QColor( 30, 30, 30 ))); painter->setFont(QFont("Consolas")); painter->drawText(rect, text); } void myStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const { switch( pe ) { case PE_PanelItemViewItem: if (const QStyleOptionViewItemV4 *option = qstyleoption_cast<const QStyleOptionViewItemV4 *>(opt)) if ((option->state & QStyle::State_Selected)) p->fillRect(option->rect, QBrush( QColor( 220,220,220,100 ))); break; default: QCommonStyle::drawPrimitive( pe, opt, p, w); break; } } 

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


All Articles