Qt readAllStandardOutput () вызывает неожиданное завершение программы - PullRequest
0 голосов
/ 05 июня 2011

Когда я пытаюсь передать readAllStandardOutput () в QString, я получаю неожиданный сбой программы, даже если я преобразую QByteStream в QString, есть идеи, почему это так? вот источник

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QProcess>
#include <QString>


#include "exeprocess.h"

/*main window ---------------------------------------*/

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QProcess *proc;

signals:
    void outLog(QString outLogVar); //plug this into the QTextEdit box

public slots:
    void logReady(); // plug the QProcess into this


private:
    Ui::MainWindow *ui;
};




#endif // MAINWINDOW_H

mainwindow.cpp

#include <QByteArray>

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QProcess *proc = new QProcess; //initialize proc
    QStringList arguments;
    arguments << "-h";

    connect(proc, SIGNAL(readyReadStandardOutput ()), this, SLOT(logReady()));

    proc->start("/Applications/Graphics/3Delight-9.0.87/bin/renderdl", arguments);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::logReady(){
    QString str = proc->readAllStandardOutput();
    emit outLog(str);
}

Спасибо!

1 Ответ

5 голосов
/ 05 июня 2011

Эта строка является проблемой:

QProcess *proc = new QProcess; //initialize proc

Вы скрываете переменную-член, повторно используя это имя.Когда вызывается logReady, 'proc', для которого вы вызываете readAllStandardOutput (), является другим (нулевым) указателем, и поэтому все вылетает.Исправление простое: замените вышеуказанную строку на

proc = new QProcess;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...