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

Error messages with piping terminal output into Qt GUI

本文关键字:GUI 错误 消息 Qt 管道 输出      更新时间:2023-10-16

对不起,另一个重复的帖子。我被推荐的那个帮助很大,但它没有编译。

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);
}

和主.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();
}

请帮忙,

布鲁克斯·雷迪

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

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

如果我是你,我会搬家

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

在构造函数中。然后它应该可以工作。

将 QProcess *proc 放入 mainwindow.h 的私有部分。之后你需要分配内存(proc = new QProcess;)在 MainWindow 构造函数和 SIGNAL/SLOT 中,您也需要在构造函数中实现。对不起我的英语!