管道终端输出到Qt GUI的错误消息

时间:2013-09-08 21:17:15

标签: c++ qt

对于其他重复的帖子感到抱歉。我被提到的那个帮助了很多,但它没有编译。

QProcess *proc = new QProcess;
connect(proc, SIGNAL(readyRead()), this, SLOT(updateText()));
proc->start("pathToScript");

第二行给了我这个错误,

error: expected constructor, destructor, or type conversion before '(' token

第三个给了我这个,

error: 'proc' does not name a type

编辑:我的其余代码。

ThiWindow.h:

#ifndef THIWINDOW_H
#define THIWINDOW_H

#include <QMainWindow>

namespace Ui {
class ThiWindow;
}

class ThiWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit ThiWindow(QWidget *parent = 0);
    ~ThiWindow();

signals:
    void readyRead();


private slots:
    void updateText();

private:
    Ui::ThiWindow *ui;

};

ThiWindow.cpp:

#endif // THIWINDOW_H
#include "thiwindow.h"
#include "ui_thiwindow.h"
#include <QProcess>

QProcess *proc = new QProcess;
connect(proc, SIGNAL(readyRead()), this, SLOT(updateText()));
proc->start("pathToScript");

ThiWindow::ThiWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ThiWindow)
{
    ui->setupUi(this);
}

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




void ThiWindow::updateText()
{
    QString appendText(proc->readAll());
    ui->textEdit->append(appendText);

}

和main.cpp:

#include "mainwindow.h"
#include "mainwindow.cpp"
#include <QApplication>
using namespace std;


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow qw;
        qw.show();
    return a.exec();
}

请帮助,

Brooks Rady

2 个答案:

答案 0 :(得分:0)

将QProcess * proc放入mainwindow.h的私有部分。之后你需要在MainWindow构造函数中分配内存(proc = new QProcess;)以及你需要在构造函数中实现的SIGNAL / SLOT。 抱歉我的英文!

答案 1 :(得分:0)

MOC文件生成将您的类定义为启用Qt的对象。

这允许您使用没有名称空间前缀的函数connect。您在“通用区域”中使用它,其中未定义connect对象,这就是您收到(错误的原因。

如果我是你,我会搬家

QProcess *proc = new QProcess;
connect(proc, SIGNAL(readyRead()), this, SLOT(updateText()));
proc->start("pathToScript");

在你的构造函数中。它应该可以工作。