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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: консоль через QT  (Прочитано 7586 раз)
br3d
Гость
« : Июнь 12, 2009, 14:28 »

Здравствуйте! подскажите, как можно передавать команды из QT приложения в Linux консоль Непонимающий
  желательно с возможностью поймать возвращаемое значение, или просто что бы при передаче команды из приложения, открывалась консоль.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июнь 12, 2009, 14:33 »

Читай про QProcess.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
br3d
Гость
« Ответ #2 : Июнь 12, 2009, 17:00 »

благодарю =)
Записан
br3d
Гость
« Ответ #3 : Июнь 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);
}
после выполнения этого кода программа напроч виснет ...., видимо я что то не так делаю(((
   подскажите в чем ошибка Непонимающий
Записан
sLiva
Гость
« Ответ #4 : Июнь 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);
}
после выполнения этого кода программа напроч виснет ...., видимо я что то не так делаю(((
   подскажите в чем ошибка Непонимающий

?
Записан
br3d
Гость
« Ответ #5 : Июнь 12, 2009, 19:31 »

сам не особо понял зачем это, но пример взят из help-а QT ....//QProcess Class Reference

и по идее эта строчка никакой роли играть не должна ...
Записан
br3d
Гость
« Ответ #6 : Июнь 13, 2009, 08:19 »

 QProcess proc;
    QStringList arguments;
    arguments << "ls";
    proc.start("/usr/bin/gnome-terminal",arguments);

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

хотел сделать так /usr/bin/gnome-terminal --command pwd   тогда консоль сразу вылетает(((
      в чем может быть причина ?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Июнь 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)
« Последнее редактирование: Июнь 13, 2009, 10:35 от lit-uriy » Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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