Russian Qt Forum

Qt => Общие вопросы => Тема начата: br3d от Июнь 12, 2009, 14:28



Название: консоль через QT
Отправлено: br3d от Июнь 12, 2009, 14:28
Здравствуйте! подскажите, как можно передавать команды из QT приложения в Linux консоль ???
  желательно с возможностью поймать возвращаемое значение, или просто что бы при передаче команды из приложения, открывалась консоль.


Название: Re: консоль через QT
Отправлено: Пантер от Июнь 12, 2009, 14:33
Читай про QProcess.


Название: Re: консоль через QT
Отправлено: br3d от Июнь 12, 2009, 17:00
благодарю =)


Название: Re: консоль через QT
Отправлено: br3d от Июнь 12, 2009, 18:59
void MainWindow::on_pushButton_clicked()
{
     QObject *parent;
     QString program = "/bin/bash";
     QStringList arguments;
     arguments << "ls";

     QProcess *myProcess = new QProcess(parent);
     myProcess->start(program, arguments);
}
после выполнения этого кода программа напроч виснет ...., видимо я что то не так делаю(((
   подскажите в чем ошибка ???


Название: Re: консоль через QT
Отправлено: sLiva от Июнь 12, 2009, 19:15
void MainWindow::on_pushButton_clicked()
{
     QObject *parent; //<-----------------
     QString program = "/bin/bash";
     QStringList arguments;
     arguments << "ls";

     QProcess *myProcess = new QProcess(parent);
     myProcess->start(program, arguments);
}
после выполнения этого кода программа напроч виснет ...., видимо я что то не так делаю(((
   подскажите в чем ошибка ???

?


Название: Re: консоль через QT
Отправлено: br3d от Июнь 12, 2009, 19:31
сам не особо понял зачем это, но пример взят из help-а QT ....//QProcess Class Reference

и по идее эта строчка никакой роли играть не должна ...


Название: Re: консоль через QT
Отправлено: br3d от Июнь 13, 2009, 08:19
 QProcess proc;
    QStringList arguments;
    arguments << "ls";
    proc.start("/usr/bin/gnome-terminal",arguments);

терминал запускается, но команды принимать отказывается ...,
  ЧТО ПОСОВЕТУЕТЕ ???

хотел сделать так /usr/bin/gnome-terminal --command pwd   тогда консоль сразу вылетает(((
      в чем может быть причина ?


Название: Re: консоль через QT
Отправлено: lit-uriy от Июнь 13, 2009, 10:32
Цитировать
сам не особо понял зачем это, но пример взят из help-а QT ....//QProcess Class Reference

Приер выглядит так:
Код
C++ (Qt)
    QObject *parent;
    ...
    QString program = "./path/to/Qt/examples/widgets/analogclock";
    QStringList arguments;
    arguments << "-style" << "motif";
 
    QProcess *myProcess = new QProcess(parent);
    myProcess->start(program, arguments);
 
Расшифровываю:
Где-то объявлен объект parent, любой наследник QObject. Об этом мне говорит многоточие после объявления.
Далее при создании объекта QProcess, ему в качестве родителя ставится этот самый parent

Т.к. ты создаешь QProcess в классе MainWindow, то передавай процессу в качестве родителя указатель на свой класс. (Т.е. this)