Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

QProcess не работает write

76K
14 августа 2014 года
updaite
8 / / 09.08.2013
Здравствуйте, есть код перехвата консоли, с выводом в textEdit.

Код:
void MainWindow::on_pushButton_clicked()
{
    this->proc = new QProcess(this);
    this->proc->setProcessChannelMode(QProcess::MergedChannels); // Устанавливаем, что вывод (и ошибки и прочее) будет валиться в один канал
    connect (this->proc, SIGNAL(readyReadStandardOutput()), this, SLOT(onReady())) ; // ловим когда процесс что то выдал
    connect (this->proc, SIGNAL(readyReadStandardError()), this, SLOT(onReadyError())) ; // ловим когда процесс выдал ошибку
    connect (this->proc, SIGNAL(onFinished()), this, SLOT(onFinished())) ; //ловим когда процесс закончил работу
    QStringList arg;
    arg << "-game" << "cstrike" <<  "+port" << "27015" << "+map" << "de_dust2" << "-console";
    proc->start("hlds.exe", arg);
 
}
 
void MainWindow::onReady()
{
   QString output(QString::fromLocal8Bit(static_cast<QProcess *>(sender())->readAll()));
   if (!output.isEmpty())
   {
     //qDebug() << output;
      ui->textEdit->append(output);
   }
}
 
void MainWindow::onReadyError()
{
    QString output(static_cast<QProcess *>(sender())->readAllStandardOutput ());
    if (!output.isEmpty())
    {
      ui->textEdit->append("Erorr: " + output);
    }
}
 
void MainWindow::onFinished()
{
   qDebug () << "Ура";
    // А так можно прибить процесс
  // this->proc->terminate();
   //this->proc->waitForFinished(10000);
}
 
void MainWindow::on_pushButton_2_clicked()
{
    proc->write("map de_dustn");
}
Код работает, но приложение hlds не реагирует на команду

 
Код:
void MainWindow::on_pushButton_2_clicked()
{
    proc->write("map de_dustn");
}
Пробовал и так

 
Код:
proc->write("map de_dustnr");
hlds.exe имеет возможность принимать команды консольно, как выполнить команду map de_dust и отобразить результат?
Qt только начал осваивать.
1
15 августа 2014 года
kot_
7.3K / / 20.01.2000
У меня как минимум один вопрос:
тут

 
Код:
this->proc = new QProcess(this);
тут

 
Код:
proc->write("map de_dustn");
теоретически это одно и тоже. Но практически - это могут быть разные объекты.
Это первое.
Второе - необходимо создавать пайпы - я не вижукода создания
76K
16 августа 2014 года
updaite
8 / / 09.08.2013
Цитата: kot_
У меня как минимум один вопрос:
тут

 
Код:
this->proc = new QProcess(this);
тут

 
Код:
proc->write("map de_dustn");
теоретически это одно и тоже. Но практически - это могут быть разные объекты.
Это первое.
Второе - необходимо создавать пайпы - я не вижукода создания



Как в данном случае прикрутить пайпы?

1
23 августа 2014 года
kot_
7.3K / / 20.01.2000
Бессмысленый ап темы вполне может закончиться ее удалением.
Если тебе это актуально - то формулируй вопрос более внятно. Например в SDK Qt есть пример на базе фортуны (был по крайней мере) поковыряй его. Гугл опятьже
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог