Russian Qt Forum

Qt => Вопросы новичков => Тема начата: BigHom от Апрель 27, 2012, 11:22



Название: Правильное использование new QProcess и disconnect в подрограмме
Отправлено: BigHom от Апрель 27, 2012, 11:22
В программах из вне вызывается подпрограмма stickmetka(QString  tdrive); из example.cpp .
В stickmetka(QString  tdrive) создаётся процесс  proc17 = new QProcess( paren );
и proc17->connect( proc17, SIGNAL(readyReadStandardOutput()), paren,   SLOT(readFrom2())    );

вопрос : 1. нужно ли при выходе из stickmetka(QString  tdrive) делать  
proc17->disconnect( proc17, SIGNAL(readyReadStandardOutput()), paren,   SLOT(readFrom2())    );
или не обязательно - как лучше?
 
2.как правильнее создавать процесс proc17 = new QProcess( paren ); внутри подпрограммы stickmetka(QString  tdrive) :
Код
C++ (Qt)
stickmetka(QString  tdrive)
{...
QProcess *proc17 = new QProcess( paren );
...}
 

или сделать в начале example.cpp :
Код
C++ (Qt)
#include "metkatoma.h"                                    
#include "qprocess.h"
#include "QtCore"
QProcess *proc17 = new QProcess( paren );
stickmetka(QString  tdrive)
{...
proc17->connect( proc17, SIGNAL(readyReadStandardOutput()), paren,   SLOT(readFrom2())    );
...
proc17->disconnect( proc17, SIGNAL(readyReadStandardOutput()), paren,   SLOT(readFrom2())    );// вопрос 2. обязателен ли данный оператор? (stickmetka(QString  tdrive) используется многократно из других срр)
...}
 
и почему ?

Рассуждения по вопросу 2: в документации по QT написано , что "На практике прямой вызов disconnect используется редко, так как Qt автоматически удаляет все соединения при удалении объектов." - то есть дисконект не обязателен? - тогда нужно ли уничтожать процесс по завершению и как , таким образом : finished();   ?