我有这个代码,但它没有工作。我正在尝试更新进度条,而我的视频正在转换。视频转换很好,但progessbar没有更新
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);
}
plz help
答案 0 :(得分:0)
QTimer
或readyRead
/ readyReadStandardOutput
信号连接到MainWindow或C ++ 11 lambda中的某个插槽,但我不确定每次输出将包含什么,所以我不知道这是否有效。toInt()
可能会失败。仅当您的输出包含纯数字67
时,它才有效;应用程序通常会产生大量输出。使用QRegExp
或QRegularExpression
(Qt5)提取数字并仅转换它们。 toInt()
支持检查转换错误是否发生,请参阅文档。