рдХреНрдпреВрдЯреА рдХреЗ рд╕рд╛рде рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореБрдЭреЗ рдХреНрдпреВрдереНрд░реЗрдб рд╡рд░реНрдЧ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рд╛ред рдирддреАрдЬрддрди, рдореИрдВ "рд╕рд╣реА" рдХреНрдпреВрдереНрд░реЗрдб рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
рдХрд╛рд░реНрдп
рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рд╕реИрдХрдбрд╝реЛрдВ, рд╣рдЬрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрд╛рдлреА рдмрдбрд╝реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреА рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ (рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╛рдВрдЪ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рддрдХ)ред рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓рддреА рд╣реИ, рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рддреА рд╣реИ, рддреЛ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
ReportBuilder
рд╡рд░реНрдЧ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд░рд┐рдкреЛрд░реНрдЯ
ReportBuilder
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред
Qt рдкреНрд░рд▓реЗрдЦрди рдЙрджрд╛рд╣рд░рдг: рдЧрд▓рдд
рдкреНрд░рд▓реЗрдЦрди рдФрд░ Qt
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрдврд╝рдХрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдереНрд░реЗрдб рдХреНрдпреВрдереНрд░реЗрдб рд╡рд░реНрдЧ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдХреЗ рдФрд░
run()
рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
class MyThread : public QThread { Q_OBJECT protected: void run(); }; void MyThread::run() { ... }
рдореИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпреВрдЯреА рдмреНрд░реИрдбрд▓реА рдЯреАред рд╣реНрдпреВрдЬреЗрд╕ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ
рдкреЛрд╕реНрдЯ рдкрдврд╝рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпреВрдереНрд░реЗрдб рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рд╡рд░реНрдЧ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдПрдХ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╡рд┐рдЪрд╛рд░ рд╣реИ:
"рдХреНрдпреВрдереНрд░реЗрдб рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рди рдХрд┐ рдЙрд╕ рдХреЛрдб рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рд╕рдмрдХреНрд▓рд╛рд╕ рдХреЛ рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдпрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рдХрд╛рд░рдг рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпреВрдереНрд░реЗрдб рдХреЛ рдЙрдк-рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рдХрд┐ рдХреНрдпреВрдереНрд░реЗрдб рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдереНрд░реЗрдб рдХреЗ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛, рдпрд╛ рд╕рдВрднрд╡рддрдпрд╛ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЗрдВрдЯрд░рдлреЗрд╕ / рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдХрд┐рд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдХреНрдпреВрдЖрд░рдПрдб рдХреЗ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред тАЭ
тАЬрдХреНрдпреВрдереНрд░реЗрдб рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдирд╣реАрдВред OOP рдореЗрдВ, рд╣рдо рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреВрдереНрд░реЗрдб рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдФрдЪрд┐рддреНрдп рдЬреЛ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдереНрд░реЗрдб рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рдЬреЛ рдереНрд░реЗрдб рдЗрд╕рдХреЗ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╕рдВрднрд╡рддрдГ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдХреНрдпреВрдереНрд░реЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП тАЭрдпрд╛рдиреА рдХреНрдпреВрдереНрд░реЗрдб рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдорд┐рд╢реНрд░рдг рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдХреНрдпреВрдереНрд░реЗрдб рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджреЗрдирд╛ рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рд╕рд╣реА рдХреИрд╕реЗ рд╣реИ? рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ
рдпрд╣ рдкреЛрд╕реНрдЯ рдпрд╣рд╛рдБ рдорд┐рд▓реА, рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдкреЛрд╕реНрдЯ рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБ:
- рдХреНрдпреВрдереНрд░реЗрдб рдПрдХ рдзрд╛рдЧрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдУрдПрд╕ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрдпреВрдЯреА рд░реИрдкрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреНрдпреВрдЯреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреВрдЯреА рд╕рд┐рдЧреНрдирд▓ / рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
- рдирдП рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реНрд╡рд╛рдореА рд╡рд╣ рдереНрд░реЗрдб рд╣реЛрдЧрд╛ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдзрд╛рд░рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рдЬреАрд╡рд┐рдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдХреИрд╕реЗ рдХрд░реЗрдВ?
рддреЛ рдзрд╛рдЧреЗ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рдиреБрд╕реНрдЦрд╛:
рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рд░рд╣реЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
ReportBuilder
ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рдкреЗрдЯреЗрдВ:
RBWorker
ред
class RBWorker : public QObject { Q_OBJECT private: ReportBuilder *rb; QStringList file_list; ReportType r_type; public: RBWorker(ReportType p_type ); ~RBWorker(); void setFileList(const QStringList &files) { file_list = files; } public slots: void process(); void stop(); signals: void finished(); }; RBWorker:: RBWorker (ReportType p_type) { rb = NULL; r_type = p_type; } RBWorker::~ RBWorker () { if (rb != NULL) { delete rb; } } void RBWorker::process() { if(file_list.count() == 0) { emit finished(); return; } switch (r_type) { case REPORT_A: { rb = new ReportBuilderA (); break; } case REPORT_B: { rb = new ReportBuilderB (); break; } case REPORT_C: { rb = new ReportBuilderC (); break; } default: emit finished(); return ; } } rb->buildToFile(file_list); emit finished(); return ; } void RBWorker::stop() { if(rb != NULL) { rb->stop(); } return ; }
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ:
RBWorker
рдПрдХ рдЙрджрд╛рд╣рд░рдг
process(),
рд╡рд┐рдзрд┐ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
process(),
рдФрд░
RBWorker
рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдирд╣реАрдВред
Session
рд╡рд░реНрдЧ рдЯреНрд░реИрдХ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
class Session : public QObject { Q_OBJECT public: Session(QObject *parent, const QString &directory, const QVector<ReportType> &p_rt); ~Session(); void buildReports(); private: void addThread(ReportType r_type); void stopThreads(); QStringList files; QVector<ReportType> reports;
рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдзрд┐:
addThread
void Session::addThread(ReportType r_type) { RBWorker* worker = new RBWorker(r_type); QThread* thread = new QThread; worker->setFileList(files); worker->moveToThread(thread); connect(thread, SIGNAL(started()), worker, SLOT(process())); connect(worker, SIGNAL(finished()), thread, SLOT(quit())); connect(this, SIGNAL(stopAll()), worker, SLOT(stop())); connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater())); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread->start(); return ; } void Session::stopThreads() { emit stopAll(); } void Session::buildReports() { stopThreads(); for(int i =0; i < reports.size(); ++i) { addThread(reports.at(i)); } return ; } void Session::~Session() { stopThreads(); тАж }
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдХрд╛рдо рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдорд╛рдпрд╛ рдкреЙрд╢ - рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреАред