-3

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

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

请帮助

4

1 回答 1

0
  • 首先,您的进度条在您的代码中配置后似乎永远不会更新。您可能想使用QTimeror readyRead/readyReadStandardOutput信号连接到 MainWindow 或 C++11 lambda 中的某个插槽,但我不确定每次输出将包含什么,所以我不知道这是否可行。
  • 其次,你toInt()很可能会失败。它仅在您的输出包含纯数字时才有效,例如67; 应用程序通常会产生大量输出。使用QRegExpor QRegularExpression(Qt5) 提取数字并仅转换它们。toInt()支持检查是否发生转换错误,请参阅文档。
于 2013-09-08T09:06:19.970 回答