mainwindow.cpp
上传用户:dsfsafq
上传日期:2022-06-05
资源大小:47k
文件大小:3k
源码类别:

多媒体

开发平台:

Visual C++

  1. #include <QtGui>
  2. #include <QtCore>
  3. #include "mainwindow.h"
  4. #include "ui_mainwindow.h"
  5. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindowClass)
  6. {
  7.     ui->setupUi(this);
  8.     QDirModel *dir_model = new QDirModel;
  9.     QCompleter *completer = new QCompleter(dir_model, this);
  10.     ui->lineInputFile->setCompleter(completer);
  11.     ui->lineOutputFile->setCompleter(completer);
  12. }
  13. MainWindow::~MainWindow()
  14. {
  15.     delete ui;
  16. }
  17. void MainWindow::on_btnLoadInput_clicked()
  18. {
  19.     inputfile = QFileDialog::getOpenFileName(this, tr("Select .rmvb file to convert"), QDir::homePath(), tr("Real Media Video (*.rmvb *.*)"));
  20.     ui->lineInputFile->setText(inputfile);
  21. }
  22. void MainWindow::on_btnSelectOutput_clicked()
  23. {
  24.     outputfile = QFileDialog::getSaveFileName(this, tr("Select .avi file"), QDir::homePath(), tr("AVI (*.avi *.*)"));
  25.     ui->lineOutputFile->setText(outputfile);
  26. }
  27. void MainWindow::on_btnConvert_clicked()
  28. {
  29.     inputfile = ui->lineInputFile->text();
  30.     outputfile = ui->lineOutputFile->text();
  31.     QString framerate = "25";
  32.     if (ui->radioNTSC->isChecked())
  33.         framerate = "29.97";
  34.     TranscodingThread *process = new TranscodingThread(inputfile, outputfile, framerate);
  35.     connect(process, SIGNAL(updateProgress(QString)), this, SLOT(updateProgress(QString)));
  36.     process->run();
  37.     progress = new QProgressDialog("Please wait while the file is transcoded.", "Cancel", 0, 100, this);
  38.     progress->setWindowModality(Qt::WindowModal);
  39.     progress->setWindowTitle("Transcoding .rmvb file...");
  40.     connect(this, SIGNAL(updateProgress(int)), progress, SLOT(setValue(int)));
  41. }
  42. void MainWindow::on_lineOutputFile_textChanged(QString )
  43. {
  44.     if (!ui->lineInputFile->text().isEmpty())
  45.     {
  46.         ui->btnConvert->setEnabled(true);
  47.         ui->btnConvert->setToolTip("Start the conversion process");
  48.     }
  49. }
  50. void MainWindow::on_lineInputFile_textChanged(QString )
  51. {
  52.     if (!ui->lineOutputFile->text().isEmpty())
  53.     {
  54.         ui->btnConvert->setEnabled(true);
  55.         ui->btnConvert->setToolTip("Start the conversion process");
  56.     }
  57. }
  58. void MainWindow::updateProgress(QString percentage)
  59. {
  60.     if(percentage == "finished")
  61.     {
  62.         emit updateProgress(100);
  63.         return;
  64.     }
  65.     percentage.replace("(", "");
  66.     percentage.replace("%", "");
  67.     percentage.replace(")", "");
  68.     emit updateProgress(percentage.toInt());
  69.     //    QMessageBox msgBox;
  70.     //    msgBox.setText("The conversion process is complete. Thanks for using rmvb2avi! :)");
  71.     //    msgBox.setInformativeText("Convert another file?");
  72.     //    msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
  73.     //    msgBox.setDefaultButton(QMessageBox::No);
  74.     //    int ret = msgBox.exec();
  75.     //    if (ret == QMessageBox::No || ret == QMessageBox::Cancel)
  76.     //        this->close();
  77. }