QProcess->write() reagiert nur einmal [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
jasper
Beiträge: 60
Registriert: 3. Februar 2009 11:36
Wohnort: Hamburg

QProcess->write() reagiert nur einmal [gelöst]

Beitrag von jasper »

Hallo Forum,
ich habe eine Frage zu der Klasse QProcess, da die Methode write() bei mir
nur einmal funktioniert bzw. ein Ergebnis produziert. Hier der Code:

Code: Alles auswählen

// *** Hier ist der Konstruktor
 TQConsole::TQConsole(void)
{
   QString strIn,
           strOut,
           strErr,
           strTitle,
           strText;
   T_ITE   ITE;

   // *** importing widgets
   ui.setupUi(this);
   // *** connecting slots
   connect(ui.btnClose      , SIGNAL(clicked())                  , this, SLOT(btnCloseClick(void)));

   this->pProcess = new QProcess();
   connect(this->pProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(onReadyReadStandardOutput(void)));
   this->pProcess->setWorkingDirectory("/media/flash/deva/der500");
   this->pProcess->start("/bin/bash");
   if (this->pProcess->waitForStarted() == false)
   {
      strTitle    = ITE.SFehler;
      strText     = "Der Prozess konnte nicht gestartet werden.";
      ShowMessage(strTitle,strText,QMessageBox::Ok,QMessageBox::Critical); 
   }
   else
   {
      ui.textEdit->clear();
      this->pProcess->setReadChannel(QProcess::StandardOutput);
      this->pProcess->write("whoami\n"); // geht, also mit Reaktion im slot
      this->pProcess->write("whoami\n"); // geht nicht, also ohne Reaktion im slot

   }

   ui.textEdit->setFocusProxy(this);
   this->Command = "";

}
// *** Nun kommt der slot zum lesen
void TQConsole::onReadyReadStandardOutput(void)
{
   QString strLine;

   strLine = this->pProcess->readAll();
   ui.textEdit->append(strLine);
   qDebug() << "strLine=" << strLine;
}

Wahrscheinlich fehlt hier irgentwas- aber was?

Danke und Gruß

Jasper
Zuletzt geändert von jasper am 14. Dezember 2011 13:34, insgesamt 1-mal geändert.
jasper
Beiträge: 60
Registriert: 3. Februar 2009 11:36
Wohnort: Hamburg

Re: QProcess->write() reagiert nur einmal

Beitrag von jasper »

... nun habe ich es selber gefunden. Der Aufruf write() geht nicht zweimal hintereinander,
da der erste Aufruf noch nicht abgearbeitet ist.
Antworten