将 QProcess 与 QProgressbar 连接起来



我有此代码,但它不起作用。我正在尝试在视频转换时更新进度条。视频转换很好,但进度条没有更新

void MainWindow::on_pushButton_clicked()
{
QString alienpath="ffmpeg";
QStringList argument;
argument<<"-i"<<ui->lineEdit->text()<<"/home/suraj/a.flv";
QProcess *alien=new QProcess(this);
alien->start(alienpath,argument);
int p;
p=alien->readAll().toInt();
ui->progressBar->setMaximum(0);
ui->progressBar->setMinimum(100);
ui->progressBar->setValue(p);
}

请帮忙

  • 首先,在代码中配置进度条后,进度条似乎从未更新过。您可能想使用 QTimerreadyRead/readyReadStandardOutput 信号连接到 MainWindow 或 C++11 lambda 中的某个插槽,但我不确定每次输出将包含什么,所以我无法判断这是否有效。
  • 其次,你的toInt()很可能会失败。仅当您的输出包含纯数字(如 67 时,它才有效;该应用程序通常会产生大量输出。使用 QRegExpQRegularExpression (Qt5) 提取数字并仅转换它们。 toInt()支持检查是否发生了转换错误,请参阅文档。

相关内容

  • 没有找到相关文章

最新更新