Russian Qt Forum
Сентябрь 30, 2024, 08:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Правильное использование new QProcess и disconnect в подрограмме  (Прочитано 2199 раз)
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();   ?
« Последнее редактирование: Апрель 27, 2012, 12:17 от BigHom » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.077 секунд. Запросов: 20.