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

📄 playerwindow.cpp

📁 Qt4的一些例子
💻 CPP
字号:
#include <QtGui>#include <QAxWidget>#include "playerwindow.h"PlayerWindow::PlayerWindow(){    wmp = new QAxWidget;    wmp->setControl("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}");    wmp->setProperty("ShowControls", false);    wmp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);    connect(wmp, SIGNAL(PlayStateChange(int, int)),            this, SLOT(onPlayStateChange(int, int)));    connect(wmp, SIGNAL(ReadyStateChange(ReadyStateConstants)),            this, SLOT(onReadyStateChange(ReadyStateConstants)));    connect(wmp, SIGNAL(PositionChange(double, double)),            this, SLOT(onPositionChange(double, double)));    openButton = new QToolButton;    openButton->setText(tr("&Open..."));    connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));    playPauseButton = new QToolButton;    playPauseButton->setText(tr("&Play"));    playPauseButton->setEnabled(false);    connect(playPauseButton, SIGNAL(clicked()), wmp, SLOT(Play()));    stopButton = new QToolButton;    stopButton->setText(tr("&Stop"));    stopButton->setEnabled(false);    connect(stopButton, SIGNAL(clicked()), wmp, SLOT(Stop()));    seekSlider = new QSlider(Qt::Horizontal);    seekSlider->setEnabled(false);    connect(seekSlider, SIGNAL(valueChanged(int)),            this, SLOT(sliderValueChanged(int)));    connect(seekSlider, SIGNAL(sliderPressed()),            wmp, SLOT(Pause()));    fileFilters = tr("Video files (*.mpg *.mpeg *.avi *.wmv)\n"                     "Audio files (*.mp3 *.wav)");    updateTimer = 0;    QHBoxLayout *buttonLayout = new QHBoxLayout;    buttonLayout->addWidget(openButton);    buttonLayout->addWidget(playPauseButton);    buttonLayout->addWidget(stopButton);    QVBoxLayout *mainLayout = new QVBoxLayout;    mainLayout->addWidget(wmp);    mainLayout->addLayout(buttonLayout);    mainLayout->addWidget(seekSlider);    setLayout(mainLayout);    setWindowTitle(tr("Media Player"));    setMouseTracking(true);}void PlayerWindow::timerEvent(QTimerEvent *event){    if (event->timerId() == updateTimer) {        double curPos = wmp->property("CurrentPosition").toDouble();        onPositionChange(-1, curPos);    } else {        QWidget::timerEvent(event);    }}void PlayerWindow::onPlayStateChange(int, int newState){    playPauseButton->disconnect(wmp);    switch (newState) {    case Stopped:        if (updateTimer) {            killTimer(updateTimer);            updateTimer = 0;        }        // fall through    case Paused:        connect(playPauseButton, SIGNAL(clicked()), wmp, SLOT(Play()));        stopButton->setEnabled(false);        playPauseButton->setText(tr("&Play"));        break;    case Playing:        if (!updateTimer)            updateTimer = startTimer(100);        connect(playPauseButton, SIGNAL(clicked()),                wmp, SLOT(Pause()));        stopButton->setEnabled(true);        playPauseButton->setText(tr("&Pause"));    }}void PlayerWindow::onReadyStateChange(ReadyStateConstants ready){    if (ready == Complete) {        double duration = 60 * wmp->property("Duration").toDouble();        seekSlider->setMinimum(0);        seekSlider->setMaximum(int(duration));        seekSlider->setEnabled(true);        playPauseButton->setEnabled(true);    }}void PlayerWindow::onPositionChange(double, double newPos){    seekSlider->blockSignals(true);    seekSlider->setValue(int(newPos * 60));    seekSlider->blockSignals(false);}void PlayerWindow::sliderValueChanged(int newValue){    seekSlider->blockSignals(true);    wmp->setProperty("CurrentPosition", double(newValue) / 60);    seekSlider->blockSignals(false);}void PlayerWindow::openFile(){    QString fileName = QFileDialog::getOpenFileName(this,                               tr("Select File"), ".", fileFilters);    if (!fileName.isEmpty())        wmp->setProperty("FileName", QDir::convertSeparators(fileName));}

⌨️ 快捷键说明

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