Affichage en temps réel de QProcess de sortie dans un textBrowser
Je suis un newbie dans le développement de qt et je veux transférer la sortie de QProcess à un textBrowser en temps réel. J'ai commencé par l'exécution d'une simple commande echo,mais la sortie du programme n'est pas affiché.
Ce que je fais mal????
QProcess p;
p.start("echo hye");
QByteArray byteArray = p.readAllStandardOutput();
QStringList strLines = QString(byteArray).split("\n");
QString line= p.readAllStandardOutput();
if(p.state()==QProcess::NotRunning)
ui->textBrowser->append("not running");
foreach (QString line, strLines){
ui->textBrowser->append(line);}
P. S. je suis sur une machine linux.
EDIT:
Je ne suis toujours pas en mesure d'obtenir la sortie dans un textBrowser .
J'ai changé le Qprocess paramètres et essayé les deux waitForStarted() et waitForReadyRead (), de sorte que le processus démarre dans le temps et les résultats sont disponibles.
J'ai ajouté waitForFinished (), de sorte que le processus ne se termine pas quand elle est hors de portée.
QProcess p;
p.start("echo", QStringList() << "hye");
p.waitForStarted();
QByteArray byteArray = p.readAllStandardOutput();
QStringList strLines = QString(byteArray).split("\n");
QString line= p.readAllStandardOutput();
if(p.state()==QProcess::NotRunning)
ui->textBrowser->append("not running");
ui->textBrowser->append(line);
p.waitForFinished();
OriginalL'auteur Tanmay J Shetty | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
pour lire la sortie standard, vous avez besoin d'appeler
waitForReadyRead()
avant de lire standard de sortie , ou vous devez vous connecter Qprocess du signalreadyReadStandardOutput()
de votre logement et de lire la sortie standard de la fente.assurez-vous également que votre QProcess n'est pas sur la pile.
J'ai essayé le code suivant fonctionne très bien.
EDIT:
ajout d'un exemple de code, j'espère que ça aidera.
Je voudrais afficher les résultats dans une textBrowser,mais ce code affiche les résultats dans qt du terminal lui-même.
eh bien, vous pouvez utiliser l'interface utilisateur->textBrowser->append au lieu de qDebug()
Voir sites.google.com/site/marcsturmspages/qt/... pour la mise en mémoire tampon problème et sa solution de contournement.
OriginalL'auteur Kunal