• 4886阅读
  • 4回复

設計影片剪接器的問題 [复制链接]

上一主题 下一主题
离线tako761208
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-19

小弟使用Qt Creator想做一個影片剪接器的介面
介面大概是基本的工作列然後一個中間有個框框是影片開啟後撥放的
我看到有些範例那個框框用Label雖然覺得有點奇怪~但是還是先跟著用
於是寫了一小段程式,但還是有些地方有問題。
目前compile沒問題,但是呢~~介面出來我開啟檔案後程式會出現"程式已停止運行"。
不知道是啥原因~想請大家幫我看看是不是在程式上有錯誤導致的~~

還有存檔的問題我還是不太懂~我只會寫一般文件檔案存檔~~
但是一想到如果是影片要存檔那該如何寫ㄋ??

小弟是Qt初學者~所以有需多地方還很不熟~希望大家講解及見諒><!!
mainwindows.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;


}
void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,

                                      tr("Open a Movie"),currentMovieDirectory);
    if (!fileName.isEmpty())
        openFile(fileName);
}
void MainWindow::openFile(const QString &fileName)
 {
    currentMovieDirectory = QFileInfo(fileName).path();

    movie->stop();
    movieLabel->setMovie(movie);
    movie->setFileName(fileName);
    movie->start();
 }

void MainWindow::on_actionSave_triggered()
{
     if (curFile.isEmpty())
         on_actionSaveAs_triggered();
     else
         saveFile(curFile);
 }

void MainWindow::saveFile(const QString &fileName)
 {
    
 }

void MainWindow::on_actionSaveAs_triggered()
{
    QString fileName = QFileDialog::getSaveFileName(this);
    if (fileName.isEmpty())
        return;

    saveFile(fileName);
}

void MainWindow::on_actionClose_triggered()
{
    this->close();
}

void MainWindow::on_actionAbout_triggered()
{
    QMessageBox::information(this, tr("About"),
                                   tr("this is a test"));
}


mainwindows.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>
#include <QFileDialog>
#include <QFile>
#include <QMessageBox>
#include <QMovie>
#include <phonon/audiooutput.h>
#include <phonon/backendcapabilities.h>
#include <phonon/effect.h>
#include <phonon/effectparameter.h>
#include <phonon/effectwidget.h>
#include <phonon/mediaobject.h>
#include <phonon/seekslider.h>
#include <phonon/videowidget.h>
#include <phonon/volumeslider.h>


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();
MainWindow(const QString &fileName);


protected:
void changeEvent(QEvent *e);

private:
Ui::MainWindow *ui;
void openFile(const QString &fileName);
void saveFile(const QString &fileName);
void setCurrentFile(const QString &fileName);
QString curFile;
QString currentMovieDirectory;
QLabel *movieLabel;
QMovie *movie;



private slots:

void on_actionAbout_triggered();
void on_actionClose_triggered();
void on_actionSaveAs_triggered();
void on_actionSave_triggered();
void on_actionOpen_triggered();

};

#endif // MAINWINDOW_H




离线benbenmajia

只看该作者 1楼 发表于: 2010-03-19
movie都没初始化吧?
安然.....
离线tako761208
只看该作者 2楼 发表于: 2010-03-19
引用第1楼benbenmajia于2010-03-19 09:19发表的  :
movie都没初始化吧?


何謂初始化??是否在講詳細一點ㄋ??
感謝您的回覆~~
离线benbenmajia

只看该作者 3楼 发表于: 2010-03-19
就是这个movie里面是没有内容的
安然.....
离线tako761208
只看该作者 4楼 发表于: 2010-03-23
引用第3楼benbenmajia于2010-03-19 15:10发表的  :
就是这个movie里面是没有内容的


我現在修改好了~~但是我變成是會跳出一個widget ~~
我試著修改~~把widget做修改~~但是會變成程式直接當掉or沒東西有聲音~~




請幫我看看邀如何修改才能讓影片直接在mainwindow出現


#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open a Movie"));
    if (!fileName.isEmpty())
        openFile(fileName);
}
void MainWindow::openFile(const QString &fileName)
{

    QWidget *widget = new QWidget;
    widget->setWindowTitle("Video Player");
    widget->resize(640,480);

    media = new Phonon::MediaObject(this);
    media->setCurrentSource(Phonon::MediaSource(fileName));
    
    vwidget = new Phonon::VideoWidget(widget);
    Phonon::createPath(media, vwidget);
    vwidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);

    aOutput = new Phonon::AudioOutput(Phonon::VideoCategory);
    Phonon::createPath(media, aOutput);

    media->play();
    media->pause();
    widget->show();


}
[ 此帖被tako761208在2010-03-23 02:01重新编辑 ]
快速回复
限100 字节
 
上一个 下一个