<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Qt 4.2: movieplayer.cpp Example File (widgets/movie/movieplayer.cpp)</title> <link href="classic.css" rel="stylesheet" type="text/css" /> </head> <body> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td align="left" valign="top" width="32"><a href="http://www.trolltech.com/products/qt"><img src="images/qt-logo.png" align="left" width="32" height="32" border="0" /></a></td> <td width="1"> </td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="mainclasses.html"><font color="#004faf">Main Classes</font></a> · <a href="groups.html"><font color="#004faf">Grouped Classes</font></a> · <a href="modules.html"><font color="#004faf">Modules</font></a> · <a href="functions.html"><font color="#004faf">Functions</font></a></td> <td align="right" valign="top" width="230"><a href="http://www.trolltech.com"><img src="images/trolltech-logo.png" align="right" width="203" height="32" border="0" /></a></td></tr></table><h1 align="center">movieplayer.cpp Example File<br /><sup><sup>widgets/movie/movieplayer.cpp</sup></sup></h1> <pre> /**************************************************************************** ** ** 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:<span class="comment">//www.trolltech.com/products/qt/opensource.html</span> ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http:<span class="comment">//www.trolltech.com/products/qt/licensing.html or contact the</span> ** 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(); }</pre> <p /><address><hr /><div align="center"> <table width="100%" cellspacing="0" border="0"><tr class="address"> <td width="30%">Copyright © 2006 <a href="trolltech.html">Trolltech</a></td> <td width="40%" align="center"><a href="trademarks.html">Trademarks</a></td> <td width="30%" align="right"><div align="right">Qt 4.2.1</div></td> </tr></table></div></address></body> </html>