⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movieplayer.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "movieplayer.h"MoviePlayer::MoviePlayer(QWidget *parent)    : QWidget(parent){    movie = new QMovie(this);    movie->setCacheMode(QMovie::CacheAll);    movieLabel = new QLabel(tr("No movie loaded"));    movieLabel->setAlignment(Qt::AlignCenter);    movieLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);    movieLabel->setBackgroundRole(QPalette::Dark);    movieLabel->setAutoFillBackground(true);    currentMovieDirectory = "movies";    createControls();    createButtons();    connect(movie, SIGNAL(frameChanged(int)), this, SLOT(updateFrameSlider()));    connect(movie, SIGNAL(stateChanged(QMovie::MovieState)),            this, SLOT(updateButtons()));    connect(fitCheckBox, SIGNAL(clicked()), this, SLOT(fitToWindow()));    connect(frameSlider, SIGNAL(valueChanged(int)), this, SLOT(goToFrame(int)));    connect(speedSpinBox, SIGNAL(valueChanged(int)),            movie, SLOT(setSpeed(int)));    mainLayout = new QVBoxLayout;    mainLayout->addWidget(movieLabel);    mainLayout->addLayout(controlsLayout);    mainLayout->addLayout(buttonsLayout);    setLayout(mainLayout);    updateFrameSlider();    updateButtons();    setWindowTitle(tr("Movie Player"));    resize(400, 400);}void MoviePlayer::open(){    QString fileName = QFileDialog::getOpenFileName(this, tr("Open a Movie"),                               currentMovieDirectory);    if (!fileName.isEmpty())        openFile(fileName);}void MoviePlayer::openFile(const QString &fileName){    currentMovieDirectory = QFileInfo(fileName).path();    movie->stop();    movieLabel->setMovie(movie);    movie->setFileName(fileName);    movie->start();    updateFrameSlider();    updateButtons();}void MoviePlayer::goToFrame(int frame){    movie->jumpToFrame(frame);}void MoviePlayer::fitToWindow(){    movieLabel->setScaledContents(fitCheckBox->isChecked());}void MoviePlayer::updateFrameSlider(){    bool hasFrames = (movie->currentFrameNumber() >= 0);    if (hasFrames) {        if (movie->frameCount() > 0) {            frameSlider->setMaximum(movie->frameCount() - 1);        } else {            if (movie->currentFrameNumber() > frameSlider->maximum())                frameSlider->setMaximum(movie->currentFrameNumber());        }        frameSlider->setValue(movie->currentFrameNumber());    } else {        frameSlider->setMaximum(0);    }    frameLabel->setEnabled(hasFrames);    frameSlider->setEnabled(hasFrames);}void MoviePlayer::updateButtons(){    playButton->setEnabled(movie->isValid() && movie->frameCount() != 1                           && movie->state() == QMovie::NotRunning);    pauseButton->setEnabled(movie->state() != QMovie::NotRunning);    pauseButton->setChecked(movie->state() == QMovie::Paused);    stopButton->setEnabled(movie->state() != QMovie::NotRunning);}void MoviePlayer::createControls(){    fitCheckBox = new QCheckBox(tr("Fit to Window"));    frameLabel = new QLabel(tr("Current frame:"));    frameSlider = new QSlider(Qt::Horizontal);    frameSlider->setTickPosition(QSlider::TicksBelow);    frameSlider->setTickInterval(10);    speedLabel = new QLabel(tr("Speed:"));    speedSpinBox = new QSpinBox;    speedSpinBox->setRange(1, 9999);    speedSpinBox->setValue(100);    speedSpinBox->setSuffix(tr("%"));    controlsLayout = new QGridLayout;    controlsLayout->addWidget(fitCheckBox, 0, 0, 1, 2);    controlsLayout->addWidget(frameLabel, 1, 0);    controlsLayout->addWidget(frameSlider, 1, 1, 1, 2);    controlsLayout->addWidget(speedLabel, 2, 0);    controlsLayout->addWidget(speedSpinBox, 2, 1);}void MoviePlayer::createButtons(){    QSize iconSize(36, 36);    openButton = new QToolButton;    openButton->setIcon(QIcon(":/images/open.png"));    openButton->setIconSize(iconSize);    openButton->setToolTip(tr("Open File"));    connect(openButton, SIGNAL(clicked()), this, SLOT(open()));    playButton = new QToolButton;    playButton->setIcon(QIcon(":/images/play.png"));    playButton->setIconSize(iconSize);    playButton->setToolTip(tr("Play"));    connect(playButton, SIGNAL(clicked()), movie, SLOT(start()));    pauseButton = new QToolButton;    pauseButton->setCheckable(true);    pauseButton->setIcon(QIcon(":/images/pause.png"));    pauseButton->setIconSize(iconSize);    pauseButton->setToolTip(tr("Pause"));    connect(pauseButton, SIGNAL(clicked(bool)), movie, SLOT(setPaused(bool)));    stopButton = new QToolButton;    stopButton->setIcon(QIcon(":/images/stop.png"));    stopButton->setIconSize(iconSize);    stopButton->setToolTip(tr("Stop"));    connect(stopButton, SIGNAL(clicked()), movie, SLOT(stop()));    quitButton = new QToolButton;    quitButton->setIcon(QIcon(":/images/quit.png"));    quitButton->setIconSize(iconSize);    quitButton->setToolTip(tr("Quit"));    connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));    buttonsLayout = new QHBoxLayout;    buttonsLayout->addStretch();    buttonsLayout->addWidget(openButton);    buttonsLayout->addWidget(playButton);    buttonsLayout->addWidget(pauseButton);    buttonsLayout->addWidget(stopButton);    buttonsLayout->addWidget(quitButton);    buttonsLayout->addStretch();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -