6.视频播放器
设计过程如下:
1)新建项目:
新建Qt Widgets Application,项目名称为“Player”,勾选ui界面设计选项,基类选择“QWidget”,类名命名为“Player”,并添加该工程的头文件和源文件。
2)完善.pro文件:
在.pro文件中添加如下代码:
QT += network \
xml \
multimedia \
multimediawidgets \
Widgets
3)实现视频播放器功能
使用传递到qvideowidget中的qmediaplayer对象来控制视频输出。为了提供应用程序播放列表功能,我们还使用qplaylist对象。要激活对话框上的播放和停止等各种功能,单击按钮的事件会发出play()和stop()信号,这些信号连接到qmediaplayer的play()和stop()插槽。关键代码如下:
connect(controls, SIGNAL(play()), player, SLOT(play()));
connect(controls, SIGNAL(pause()), player, SLOT(pause()));
connect(controls, SIGNAL(stop()), player, SLOT(stop()));
打开电脑中的文件,其程序代码如下:
void Player::open()
{
QFileDialog fileDialog(this);
fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
fileDialog.setWindowTitle(tr("Open Files"));
QStringList supportedMimeTypes = m_player->supportedMimeTypes();
if (!supportedMimeTypes.isEmpty()) {
supportedMimeTypes.append("audio/x-m3u"); // MP3 playlists
fileDialog.setMimeTypeFilters(supportedMimeTypes);
}
fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).value(0, QDir::homePath()));
if (fileDialog.exec() == QDialog::Accepted)
addToPlaylist(fileDialog.selectedUrls());
}
该部分效果如图3-27所示:
图3-27 打开电脑中的视频文件
播放视频的效果如图3-28所示:
图3-28 播放列表中的视频
4)获取volume并设置用户界面,关键程序代码如下:
controls->setvolume(player->volume());
5)实现音量调节功能,关键代码如下:
connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int)));
7)通过qvideowidget对象更改各种视频属性。可以通过单击一个按钮进入全屏模式,然后再次返回。按下“视频调整”对话框按钮,可以接触到更微妙的功能,该对话框有一组滑块,用来更改正在观看的视频的亮度、对比度、色调和饱和度。connect()语句成对出现,因此对用户界面小部件(相关滑块)或qvideowidget对象的更改将更新另一个对象。关键代码如下:
connect(brightnessSlider, SIGNAL(sliderMoved(int)), videoWidget,
SLOT(setBrightness(int)));
connect(videoWidget, SIGNAL(brightnessChanged(int)),
brightnessSlider, SLOT(setValue(int)));
connect(contrastSlider, SIGNAL(sliderMoved(int)), videoWidget,
SLOT(setContrast(int)));
connect(videoWidget, SIGNAL(contrastChanged(int)), contrastSlider,
SLOT(setValue(int)));
connect(hueSlider, SIGNAL(sliderMoved(int)), videoWidget,
SLOT(setHue(int)));
connect(videoWidget,