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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess + Shell + dh_make  (Прочитано 2227 раз)
iks
Гость
« : Февраль 14, 2011, 19:19 »

Есть класс для вызова
Код:
#include "getPogram.h"

getPogram::getPogram(){}


void getPogram::run()
{
    myProcess = new QProcess(this);
    connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotDataOnStdout()));
    connect(myProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotStandartError()));
    myProcess->setReadChannel(QProcess::StandardError);
    myProcess->start(toTxtProg);
    exec();
    return;
}

void getPogram::slotDataOnStdout()
{
    QStringList lst;
    lst.append(myProcess->readAllStandardOutput());
    emit otvetClass(lst);
    myProcess->exitStatus();
    return;
}


void getPogram::slotStandartError(){
    QStringList lst;
    lst.append(myProcess->readAllStandardError());
    emit otvetClass(lst);
    myProcess->exitStatus();
    return;
}
из другого класса вызываю
Код:
//-- старт программа
void twoClass::startZaprosClass(){
    QFile fileTemp(strPachProg+"/temp");
    if(fileTemp.open(QIODevice::WriteOnly))
    {
        QTextStream Out(&fileTemp);
        Out << "#!/bin/sh" << endl
            << "cd " << strPachProg << endl
            << "tar cvpzf " << strNamePacet << "_" << strNumPacet << ".orig.tar.gz " << strNamePacet << "-" << strNumPacet  << endl
            << "rm -r " << strNamePacet << "-" << strNumPacet << "/*" << endl
            << "echo \"-----=====-----\"" << endl
            << "echo \"Archive " << strNamePacet << "_" << strNumPacet << ".orig.tar.gz harvested\"" << endl
            << "echo \"-----=====-----\"" << endl
            << "cd "  << strNamePacet << "-" << strNumPacet << endl
            << "export DEBFULLNAME=\"" << strNameKey << "\"" << endl
            << "echo | dh_make -s -e " << strMailKey << endl
            << "exit" << endl;
    }
    fileTemp.close();

    txtOtvetProg = new QTextEdit();
   
    goProg = new getPogram;
    goProg->moveToThread(goProg);
    connect(goProg, SIGNAL(otvetClass(QStringList)), this, SLOT(otvetZaprosClass(QStringList)));
    goProg->returnProgram("sh " + strPachProg + "/temp");
    goProg->start();
    return;
}

void twoClass::otvetZaprosClass(QStringList otv){
    foreach(QString str, otv) {
        txtOtvetProg->append(str);
    }
    return;
}

Вот так решился данный вопрос, все проходит автоматом.
-----------------------------
Почему решил через Shell пройти с ним проще зайти в нужную папку и уже в ней вызвать прогу, средствами QT я этого не нашел что-то.
Программа для Linux http://soft.mech-magic.com/phpBB3/viewforum.php?f=3 создание deb пакетов
« Последнее редактирование: Февраль 27, 2011, 13:03 от iks » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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