【问题标题】:connect QProcess with QProgressbar将 QProcess 与 QProgressbar 连接
【发布时间】:2013-09-08 07:55:01
【问题描述】:

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

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

请帮忙

【问题讨论】:

    标签: qt qt4 qt5 qprocess qprogressbar


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多