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