0
当我试图发射readAllStandardOutput()到一个QString即时获取意外的程序崩溃,即使我将QByteStream转换为QString,任何想法,为什么?继承人德源Qt readAllStandardOutput()导致意外的程序结束
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);
}
谢谢!
这是一个梦想,但我不知道为什么,你是什么意思的影子?谢谢PAG,j – 2011-06-05 00:09:14
@jonathan当你声明本地的'proc'变量时,它只是隐藏了类成员变量的decalration,所以方法中'proc'的所有用法引用本地的,不是成员变量。如果你至少有最小的C++知识,你应该看到错误,知道它被指出。 – 2011-06-05 00:15:28
通过使用'new QProcess(this)'使主窗口成为进程的父进程也是一个好主意,这样当主窗口get被销毁时它会被自动删除。 – 2011-06-05 00:16:49