相关疑难解决方法(0)

从Qt4运行Linux命令

如何从Qt4在Linux下运行命令行程序?当然我想以某种方式获得输出我可以使用.我会用它来做ls | grep,但是对于任何未来的问题都很有用.

c++ linux shell posix qt4

9
推荐指数
1
解决办法
1万
查看次数

启动进程并重定向其 stdio 的跨平台方式

我想知道是否有一个跨平台(Windows、Linux、BSD)库,我可以用它异步启动一个进程,并iostream为其标准管道提供类似的包装器。

我希望它能够知道进程何时终止。

谢谢。

c++ stdio

5
推荐指数
1
解决办法
2110
查看次数

在textBrowser中实时显示QProcess输出

我是qt开发的新手,我想将QProcess的输出实时传输到textBrowser.我开始执行一个简单的echo命令,但程序的输出没有显示出来.我究竟做错了什么????

QProcess p;
p.start("echo hye");
QByteArray byteArray = p.readAllStandardOutput();
    QStringList strLines = QString(byteArray).split("\n");
    QString line= p.readAllStandardOutput();
    if(p.state()==QProcess::NotRunning)
        ui->textBrowser->append("not running");
    foreach (QString line, strLines){
    ui->textBrowser->append(line);}
Run Code Online (Sandbox Code Playgroud)

PS我在linux机器上.

编辑:我仍然无法在textBrowser中获取输出.

我更改了Qprocess参数并尝试了waitForStarted()和waitForReadyRead(),以便进程及时启动并且结果可用.

我添加了waitForFinished(),以便当进程超出范围时进程不会终止.

QProcess p;
    p.start("echo", QStringList() << "hye");
    p.waitForStarted();
    QByteArray byteArray = p.readAllStandardOutput();
    QStringList strLines = QString(byteArray).split("\n");
    QString line= p.readAllStandardOutput();
    if(p.state()==QProcess::NotRunning)
        ui->textBrowser->append("not running");
    ui->textBrowser->append(line);
    p.waitForFinished();
Run Code Online (Sandbox Code Playgroud)

qt qprocess qt-creator

3
推荐指数
1
解决办法
1万
查看次数

如何从分离的QProcess中读取stdout/stderr

我是Qt的初学者.我需要从桌面应用程序中的按钮调用命令行程序.该计划下载YouTube视频.我还需要从中读取标准错误.我写了以下代码:

void YoutubeDL::on_downloadButton_clicked()
{
    [...]

    QProcess p;
    p.startDetached("youtube-dl -f " + get + " " + ui->urlBox->text());
    QString perr = p.readAllStandardError();
    if (perr.length())
        ui->descBox->setText("Error during download.\n" + perr);
    else
        ui->descBox->setText("Download completed!");
}
Run Code Online (Sandbox Code Playgroud)

然而,stderr读取不会发生.

在另一方面,如果我使用非分离p.start(),然后waitForFinished(-1)再我可以读取标准错误,但是GUI冻结,直至下载完成.

怎么解决这个问题?

一个相关的问题:我还想要一些方法能够实时读取下载过程的输出,以便我可以在GUI中显示它.youtube-dl给出了这样的进度报告:

[download]   0.0% of 2.00MiB at 173.22KiB/s ETA 00:12
[download]   0.1% of 2.00MiB at 105.01KiB/s ETA 00:19
[download]   0.3% of 2.00MiB at 96.86KiB/s ETA 00:21
[download]   0.7% of 2.00MiB at 105.23KiB/s ETA 00:19
[download]   1.5% of 2.00MiB at 100.29KiB/s ETA …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading

3
推荐指数
1
解决办法
5010
查看次数

标签 统计

c++ ×3

qt ×2

linux ×1

multithreading ×1

posix ×1

qprocess ×1

qt-creator ×1

qt4 ×1

shell ×1

stdio ×1