我有一个代码应该将 bat 文件输出的数据发送到 textLabel:
void MainWindow::on_pushButton_clicked()
{
QString program = "PyModuleInstaller.bat";
QProcess *Process = new QProcess(this);
Process->start(program);
connect(Process, &QProcess::readAllStandardOutput, [&] {
ui->label->setText(Process->readAllStandardOutput());
});
}
我想将其更改readAllStandardOutput
为readyReadStandardOutput()
. 如果我只是更改它,我会收到一个错误:函数调用的参数太少,预期为 1。据我了解,您需要在 manwindow.h 文件中添加一个信号
我写了一些东西(可能甚至看起来都不对):
private: signals:
void Read();
但是我不明白如何正确地发出这样的信号,以及如何将其附加到 textLabel 以便将可执行 bat 文件提供的数据发送到 textLabel。请帮帮我
readyReadStandardOutput 信号是异步发出的,因此您需要在某处累积输出并在程序结束时使用它,或者在输出到达时对其进行处理。我用 QPlainTextEdit 替换了 QLabel,随着输出的进行,它将附加读取的数据。
您不需要在头文件中添加任何内容。做什么的?这是您声明的信号,它不会在任何地方发出。